W3Schools offers a wide range of services and products for beginners and professionals, helping millions of people everyday to learn and master new skills. Free Tutorials Enjoy our free tutorials like millions of other internet users since 1999
W3Schools offers a wide range of services and products for beginners and professionals, helping millions of people everyday to learn and master new skills. Free Tutorials Enjoy our free tutorials like millions of other internet users since 1999
前回はJavaScriptのプロトタイプチェーンについて、図解を用いることでなんとか理解できました。今回はスコープチェーンに挑戦してみます。前回と同じく「1. 図解を用いる」「2. 用語を明確に定義する」「3. Standard ECMA-262 3rd editionを情報ソースとする」というアプローチで紐解いて行きます。 用語の定義 ・本エントリの文章における表記は、以下の表の「ECMA-262 3rd」に統一する ・本エントリの図における表記は、以下の表の「本エントリの略称」に統一する ・本エントリ内におけるES3とは、Standard ECMA-262 3rd editionを指す ECMA-262 3rd 本エントリの略称 JavaScript(サイ本)第5版(日本語) Execution Contexts EC 実行コンテキスト Variable Object VO 変数定義の
JavaScript のオブジェクトはプロパティ(自身のプロパティを指す)の動的な「袋」です。 JavaScript のオブジェクトは、プロトタイプオブジェクトへのリンクを持っています。あるオブジェクトのプロパティにアクセスしようとすると、オブジェクトだけでなく、オブジェクトのプロトタイプ、プロトタイプのプロトタイプへと、一致する名前のプロパティが得られるか、プロトタイプチェーンの終端に到達するまで、プロパティの探索が行われます。 メモ: ECMAScript 標準に従い、 someObject.[[Prototype]] という表記を someObject のプロトタイプを示すのに使用しています。内部スロット [[Prototype]] には Object.getPrototypeOf() と Object.setPrototypeOf() 関数でアクセスすることができます。これは、標準
子のprototype = Object.create(<親のprototype>, {value: {constructor: <子のコンストラクタの指定>}}); Object.create() は、指定した prototype オブジェクトを引き継いだ新たなオブジェクトを生成する関数です。 2つ目の引数は生成した prototype オブジェクトに持たせるプロパティを指定するハッシュオブジェクトです。ここで設定できるプロパティは決められおり、詳細はこちらで確認してください。 クラスの継承では最低限、子クラスのコンストラクタ関数オブジェクトを指定します。 このように、子クラスの prototype を、親クラスの prototype を引き継いだオブジェクトで上書きすることで、親クラスを継承したクラスとすることができます。 クラス継承の例 まず子クラスのコンストラクタを定義します。
動機 AltJSな言語ではなく、素のES5なJavascriptでクラスベース的継承ってどう書くのか、親クラスのメソッドの呼び出し方はどうか、モダンな書き方ってどうなのか、あらためて勉強してみた。 (この投稿ではES6やプロトタイパルな継承はあつかいません)
I have a scrolled div and I want to have an event when I click on it, it will force this div to scroll to view an element inside. I wrote its JavasSript like this: document.getElementById(chr).scrollIntoView(true); but this scrolls all the page while scrolling the div itself. How to fix that? I want to say it like this: MyContainerDiv.getElementById(chr).scrollIntoView(true);
追記(2016/05/05) コメントでご指摘いただきました。 過去のソースにアクセス出来ない&Javascriptの知識が浅いので経緯がわからない状態ですが、 iframe elementの取得方法と、iframe内のコンテンツの更新方法を下記のように置き換えないと動かないようです。ご注意ください。 document.getElementById('iframe_id')[0].contentDocument.location.replace('target_url or target_path'); ↓ document.getElementById('iframe_id').contentWindow.location.replace('target_url or target_path'); 追記ここまで。 以下、2014年に投稿した記事です。 コンテンツの更新システムを作る場合な
こんばんは、ころすけ(@wg_koro)です。 諸々の理由で、iframe先のページが生きているのか死んでいるのか(404など)、判定しなくてはならなくなりました。 さてどうしよう。iframeは404でもonload走るし、ステータスコード取れないし・・・。 そうだ、postMessage使おう というわけで、たどり着いたのがpostMessageを使う方法。iframe先が自分のページであることが前提になりますが、こいつを使えばどうにかなる。 あ、「postMessage」はiframeを使って、異なるページ間でメッセージ(文字列)を送受信する仕組みです。クロスドメインであってもOK。IE以外はもちろんのこと、IEも8以上で対応しています。割と広いブラウザで使える技術です。 ページ作って試してみた。 iframe先が生きているかのテスト 上記のページを表示して「iframe先は生きてる
以前、iframeについていくつか記事を書かせて頂きましたが、その続編です。 iframeで別ページを読み込む際、同じドメインでないとエラーが発生し、iframe内の要素にアクセスすることができなくなってしまいます。 一例ですが、子ページと同じ大きさにiframeをリサイズすることができなくなってしまいます。 対処法をまとめます。 postMessageを使う 親ページ→子ページへのアクセスは禁じられていますが、window.postMessage()メソッドを用いて子ページ→親ページへメッセージを受け渡すことは可能になっています。 モダンブラウザ、IE8で実装済みです。 子ページ側(メッセージを送る側) parent.postMessage('hello','*'); 第一引数は送りたいメッセージ、第二引数には対象ドメインを指定します。 ここでは対象ドメインに「*(すべて可)」を指定して
こんばんは、ころすけ(@wg_koro)です。 2ページ間の通信(片方は別ドメイン)をどうしようかなーと考えていたら、JSONPでもクロスドメインAjax(XmlHttpRequest Lv2)でもない、postMessageなるものを見つけました。IEも、IE8から使えるそうな。結構前からあるのね。全然知らなかった・・・。 window.postMessage は、安全にクロスドメイン通信を可能にするためのメソッドです。通常、異なった複数のページでのスクリプトはそれらが実行されたページが同じプロトコル(たいてい http)、ポート番号(http のデフォルトは 80)、ホスト(両方のページによって同じ値に設定される document.domain を基準とする)である場合に限りお互いにアクセスすることだけが可能です。window.postMessage は正しく使われたときに安全な方法で
JavaScriptはJSファイルが置いてある以外のドメインのファイルをセキュリティの関係上、参照出来ない仕様になっています。 よく他ドメインのXMLなどを参照したいときなどこの壁にぶつかりますね。。 この問題を解決する方法はおもに3つあります。 PHPやCGIを経由する Flashを経由する JSONPを使う PHPやCGIを経由する これは"JavaScript"→"PHP or CGI"→"参照したいファイル"という順に読み込んでいきます。 設定がとても簡単で一番一般的な方法かもしれません。 CGI等が使用出来る環境でなければならないのが条件です。 XMLを読み込む前提で記述例です。 PHP(ajax.php) <?php if(isset($_GET["url"])) readfile($_GET["url"]); ?> JavaScript(jQuery) $(function(
ここを参考にいろいろとテストしてみる。 match する場合の返り値 と しない場合の返り値する場合は Array オブジェクト が返るしない場合は null が返る
はてなカウンターがなくなってから、更新に対するモチベーションが下がった。 あと、はてなブックマークの一覧ページが変更になってからさらにモチが下がった。 なんかそこらへんについて今日は描きます。 記事広告ではない。(なぜならリンクを張ってないから(最初貼ろうと思ったけれどもどうせ誰もリンクしないし登録もしないのでネタの為にそういうことをするのがめんどくさくなった(コミックZINで夏の同人誌と取り扱い中なので買ってくださいCOMIC ZIN 通信販売/商品一覧ページ(電子書籍も、ページ下部のリンクなどから まあ、そんなこんなで。 はてなカウンターが無くなってしまった。はてなダイアリーのころからずっと一緒だったサービスが無くなってしまった。ドラえもんが未来に帰ってしまった後ののび太みたいに、部屋の隅っこでガタガタ震えながら窓の外を見つめて「すぐになれると思うよ…はてなブログ…」と言いながら、はて
WebSQL先輩… localStorageのようなシンプルなkvsじゃなくて、検索を伴うようなブラウザで永続化できるストレージあるかな、そういえばWebSQLってどうなってるんだろう?と思って調べたら、 Developer's blog | HTML5のWeb SQL DatabaseがW3Cの仕様策定の範囲から外れていた W3C、「Web SQL Database」の仕様策定を正式に断念 - builder by ZDNet Japan あらまあ Migrating your WebSQL DB to IndexedDB - HTML5 Rocks 代わりにIndexedDBを使えということらしい. なにそれ食えんの. IndexedDBとは? どうやら検索キーを指定してドキュメントをつっこめるストレージっぽい. IndexedDB is a way for you to persis
JavaScript で日付・時間を扱っていて、次から次へと罠にはまったので、あとから来る人のために書き留めておく。 Date.parse が返すのは Date でなく整数 Date.parse は、世界協定時 1970 年 1 月 1 日 00:00:00 からの経過時間をミリ秒単位で返す。 Date を得るには new Date に渡す。 new Date に直接文字列渡しても同じ挙動なので、こちらのが簡潔。 msec = Date.parse("Thu, 06 Sep 2012 00:00:00 +0900"); // 1346857200000 date = new Date(msec); // Date date = new Date("Thu, 06 Sep 2012 00:00:00 +0900"); // Date
前置き 会社の勉強会資料になります(6/16発表) フロントエンドの未来の話というか、色々なライブラリの紹介です ほとんどが5月上旬くらいに書いた資料なので、 それ以降に変化があったライブラリについては、追記という形で資料の中にコメント入れてます モジュールバンドラーの未来 モジュールバンドラーとは簡単に言うと、JavaScriptのビルドツールのことです 最近はフロントエンドでも、機能ごと・共通化などの理由によって、JSファイルを分けてコーディングをするので、 最終的にそれをまとめて、1個のJSにする必要がある その時に使われるのが、モジュールバンドラー 有名どころのツール みんな大好きwebpack 後は、rollupとかbrowserifyとか ですが、、 これからの時代は fuse-box fuse-boxとは webpackと同様なモジュールバンドラー 設定ファイルがシンプル w
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く