0
if (window.parent.frames['scripts1']) {
  if (window.parent.frames['scripts1'].document.documentElement) {
    var strSCRIPT = window.parent.frames['scripts1'].document.documentElement.textContent;
    if ((strSCRIPT.lastIndexOf('bbbbEND') - strSCRIPT.length) != -7) {
      window.parent.frames['scripts1'].document.location.href = 'test1.txt?refresh=' + Date();
    }
  } else {
    window.parent.frames['scripts1'].document.location.href = 'test1.txt?refresh=' + Date();
  }
}

私は多くのことを試しましたが、クロスブラウザ用に何かを書くことに成功しませんでした.

4

2 に答える 2

2

まず、コードをリファクタリングして繰り返しをなくします。

var s = window.parent.frames['scripts1'];
if (s) {
    var d = s.document;
    var e = d.documentElement;
    var t = e ? e.textContent : null;
    if (!t || t.length - t.lastIndexOf('bbbbEND') != 7) {
        d.location.href = 'test1.txt?refresh=' + Date();
    }
}

確認された互換性の問題が 1 つありますが、少なくとも今はそれを見つけるチャンスがあります!

具体的に.textContentは、IE8 以前ではサポートされていないため、次のようになります。

var s = window.parent.frames['scripts1'];
if (s) {
    var d = s.document;
    var e = d.documentElement;
    var t = e ? (e.textContent || e.innerText) : null;
    if (!t || t.length - t.lastIndexOf('bbbbEND') != 7) {
        d.location.href = 'test1.txt?refresh=' + Date();
    }
}
于 2012-06-26T16:22:08.413 に答える
0

開始するための jQuery の概念的な資料を次に示します。

// make sure to give your frame an ID, and then it's easy to access
var frame_a = $( "#frame_a" );        

// jQuery's content() function seems to only work on iFrames, not on Frames
var frame_a_document = $( frame_a[0].contentDocument );        

var frame_a_document_body = frame_a_document.find( "body" );
var frame_a_text = $( frame_a_document_body ).text();        

alert( frame_a_text );

この重要な事実に注意してください: 親ドキュメントがファイナライズされた後にフレームが読み込まれます。つまり、フレームが読み込まれる前に ready() 関数が実行されます。ready() 関数でフレームにアクセスしようとすると、ほとんどの場合、まだロードされていないため、何も得られません。つまり、競合状態です。

于 2012-06-26T17:03:27.750 に答える