2009-06-23 19 views
1

標準の3フレームレイアウトです。左に "fnav"、上に "fheader"、ヘッダーの下に "fcontent"があります。すべてのファイルは、ハードドライブにローカルに配置されています。Firefoxエラー:許可が拒否されてWindow.Documentが取得されない

これは、エラーをスローされたJSの関数である:

 
function writeHeaderFrame() { 
    try { 
     var headerFrame = window.top.frames['fheader']; 
     var headerTable = document.getElementById('headerTable'); 
     if (headerFrame && headerTable) { 
      headerFrame.document.body.style.backgroundColor = "Black"; 
      var headerFrameBody = headerFrame.document.documentElement.childNodes[1]; 
      headerFrameBody.innerHTML = headerTable.innerHTML; 
     } else if (headerTable) { 
      // there is a headerTable, but no headerFrame 
      headerTable.style.display = 'inline' // show the headerTable 
     } 
     } catch (e) { alert('from header.js, writeHeaderFrame(): ' + e.message); } 
} 

がfnav内のリンクをクリックする(または、最初のフレームセットロード)fcontentにロードコンテンツを、次いでfcontentでJSファイルは、「ヘッダをロードしますとにかく、フレームとか、そうなっています。 JavaScriptは最初は正常に動作しますが、リンクをクリックするたびに次のエラーが発生します。

Permission Denied To Get Window.document

理由を特定できません。任意のすべての提案をいただければ幸いです。

答えて

1

明らかに、このユーザーは、次の設定を「false」に変更することなくインストールを更新しました。これにより、ローカルドキュメントは他のすべてのローカルドキュメントにアクセスできます。

pref("security.fileuri.strict_origin_policy", true);

これは私のマシンでエラーを複製できなかった理由を説明しています。

ご協力いただきありがとうございます。

3

まず、リンクをクリックすると実行されるコードとそのHTMLを投稿してください。

2番目に、入力ミスがありましたか? Window.documentはwindow.documentにする必要がありますか? (小文字のw)

編集HTMLなしOPの質問

の変化に応答それが言うには少し難しいですが、私は暗闇の中で刺しを取っていた場合、私はこの行を言うと思います:

headerFrame.document.body.style.backgroundColor = "Black"; 

が原因のエラーです。 headerFrameは別のドメインにあり、セキュリティ上の理由から、そのフレームの内容を変更する権限はありません。もちろん、以下の行にも同じ問題があります。

同様のケースについてはhttp://userscripts.org/topics/25029http://www.webdeveloper.com/forum/showthread.php?t=189515も参照してください。

Mozillaの開発センターから編集2

Note: Firefox 3 alters the security for windows' documents so that only the domain from which it was located can access the document. While this may break some existing sites, it's a move made by both Firefox 3 and Internet Explorer 7, and results in improved security.

https://developer.mozilla.org/En/DOM/Window.documentを参照)

0

あなたはFirebugをインストールすると、エラーがスローされたラインを考え出すしようとしたことがありますか?私は質問がFirefoxにタグ付けされているので、あなたはこれがFirefoxで発生しているのを見ていると思います。

このJavascriptを使用してテンプレートのHTMLページを投稿できる場合は、最も役立ちます。

0

スクリプト/フレームページはすべて同じドメインにありますか?そうでない場合、これは予想されます。同じドメインにない場合、別のウィンドウからwindow.documentにアクセスすることはできません。

2

私はあなたが別の起源からウィンドウまたはドキュメントを操作しようとしていると思います。 HTML5(およびすべての現代のブラウザ、IE:Dでも)は、「同名の原則」と呼ばれるものを強制する(または強制しようとする)。基本的に、ある起源のJSは、異なる起源の文書またはウインドウのDOMと対話できません。

原点とは何ですか?

  • あるあなたが起源のドメインに置き換えて、ほぼ右のかもしれない基本的なレベルが、ルールのフルセットで、あなたは、例えば、(同じドメイン
  • に同じポートを持っている必要があります。example.com:80上のコードをで応答サーバと>http://example.com/?redirect=http://evil.com - 。(そう問題でもリダイレクトし、最後に
  • http://example.comを同じプロトコル(例えばhttp://example.comhttps://example.com異なる起源であるのページのDOM example.com:8080を参照することはできませんhttp://evil.comへの3xxリダイレクトは異なる原点になります)

すべての点で、ファイアフォックスは過去に同じ起源ポリシーを適用しなかった領域を強化しています。

関連する問題