タグ

ブックマーク / kkmprg.seesaa.net (2)

  • [UserScript] ロケーション・ハックとは?: スーパーハッカーになりたい

    ロケーション・ハック (location hack) とは汎用ユーザー・スクリプトを開発する上で(残念ながら)ほぼ必須となる方法のことである。紹介元の記事は英語だが、対応する日語はなさそうなので、そのままカタカナにした。 ユーザー・スクリプトの通常の役割は DOM ツリーをいじることだが、場合によってはページ側で動いている JavaScript の動きを変更したい場合がある。変数の値を書き換えたり、ページ側で定義されている関数を呼んだりする場合だ。 残念ながら、これらは簡単にはできない。セキュリティ対策のため、サンドボックス (sandbox) と呼ばれる専用の環境でユーザー・スクリプトが実行され、コンテンツ・スコープ (content scope) で実行されているページ側のデータにアクセスできないようになっているからだ。 このあたりの実装はブラウザによって異なるので、主要ブラウザでテ

    teppeis
    teppeis 2012/06/02
    sandboxからコンテンツ側にunsafeWindowを使わずにアクセスするロケーションハックの日本語解説
  • JavaScript: スーパーハッカーになりたい

    Firefox と Opera, IE ではコンテンツ・スコープにアクセスする何らかの方法があるのだが、Google Chrome ではどうやってもダメだった。汎用的かつ直接的なアクセス方法はないといえる。 変数の変更と関数の呼出 この問題をトリッキーに(ある程度)解決するのが、ロケーション・ハックと呼ばれる方法だ。 はじめに具体例を出してみよう。例えば、コンテンツ・スコープで定義されている変数 x に 234 を代入する場合には次のようにする。 location.href = "javascript: void(x = 234);"; location.href に入れた URI がコンテンツ・スコープで評価されることを利用した裏技である。location を利用した裏技であるから「ロケーション・ハック」と呼ばれる。 上の例では、void(x = 234) がコンテンツ・スコープで評価さ

  • 1