1

JavaScriptを使用して小さなiframeアプリケーションを作成していますが、誰かがiframe内のリンクをクリックしたときに作成したURLバーのURLを更新する方法がわからないようです。

document.getElementById('idofiframe')。srcの値が変更されたかどうかをミリ秒ごとにチェックせずに、瞬時に実行する必要があります。

URLがいつ変更されたかを示す簡単なプロパティが見つからないようです。そのため、URLが変更されていない場合は、プログラムでこれを解決することもできます。

助けてくれてありがとう!

4

4 に答える 4

1

これは xss と見なされ、ほとんどのブラウザーがそれをブロックするため、実行するのは困難です。

ほとんどの場合、AJAX に関連するいくつかの回避策があります。

于 2009-08-04T00:15:07.140 に答える
1

まず、iframe のソースが親ウィンドウと同じドメインを指している場合にのみ、やりたいことが可能になります。そのため、別のページ iframed.html を iframe するページ page.html がある場合、両方が同じドメインに存在する必要があります (例: www.example.com/page.html と www.example.com/iframed.html)。

その場合は、iframed.html ページで次の操作を実行できます。

<script type="text/javascript">
window.onload = function() {
    var links = document.getElementsByTagName('a');
    for (var i=0, link; link = links[i]; i++) {
        link.onclick = function() {
            window.parent.location.href = '#' + encodeURIComponent(this.href);
        }
    }
}
</script>

これにより、iframed.html のリンクをクリックするたびに、URL バーの URL の「ハッシュ タグ」にリンクの URL が表示されます (例: www.example.com/page.html#http% 3A%2F%2Fwww.example.com%2FanotherPage.html)

明らかに、iframe 内に表示されるすべてのページにこのようなスクリプトが必要です。

これを配置したら、このスニペットを page.html 内に配置すると、iframe がハッシュ タグ内の URL を自動的に読み込むようになります。

window.onload = function() {
    var url = window.location.hash.substr(1);
    if (url) {
        document.getElementById('iframe').src = url;
    }
}

残念ながら、このコードを実行してテストしていませんが、非常に簡単で、アイデアを説明する必要があります。それがどうなるか教えてください!

于 2009-08-04T01:17:22.890 に答える
0

代わりに、フレームのコンテンツにコードを追加して、コンテナー フレームにイベントを発生させることはできますか?

IE では、「OnReadyStateChanged」イベントによって必要なものが得られる場合があります。

于 2009-08-03T23:42:50.113 に答える