この記事では、WebページがIframeフレームワークに組み込まれないようにするJSの方法について説明します。次のように、参照のために共有してください。
例えば:
<script type = "text/javascript"> if(window!= top)//現在のウィンドウオブジェクトがトップオブジェクトtop.location.href = window.location.href;であるかどうかを決定します。 //そうでない場合は、上部オブジェクトのURLをWebページに埋め込まれているURLに自動的に向けます</script>
このコードは有効です。ただし、問題があります。それを使用した後、あなた自身を含む誰もあなたのWebページをフレームワークに埋め込むことはできません。
それで、今日、私は自分のWebページを自分のフレームワークにのみ組み込んで、他の人のフレームワークに埋め込む方法があるかどうかを検討していますか?
表面的には、この質問は非常に簡単です。判断を下すだけです。現在のフレームワークとトップレベルのフレームワークのドメイン名が同じかどうか、および答えがNOの場合、URLリダイレクトが実行されます。
if(top.location.hostname!= window.location.hostname){top.location.href = window.location.href;}しかし、予想外に、この文章は間違っており、まったく実行することはできません。間違いがどこにあるかわかりますか?
top.location.hostnameはwww.111.comで、window.location.hostnameがwww.222.comであると仮定します。つまり、111.comは222.comをそのWebページに埋め込みます。この時点で、top.location.hostname!= window.location.hostnameを比較するとどうなりますか?
ブラウザがコードエラーをプロンプトします!
それらはクロスドメインであるため、ブラウザのセキュリティポリシーでは、222.comのWebページが111.comのWebページを操作することはできません。その逆も同様です。 IEはこのエラーを「許可なし」と呼びます。さらに、ブラウザでは、top.location.hostnameを表示することさえできません。クロスドメインの場合、このオブジェクトが表示されたらすぐにエラーを直接報告します。
それでは、コードをどのように変更する必要がありますか?
実際、これにより、Top.location.hostnameがエラーとして報告されているかどうかを確認するだけです。エラーが報告されている場合、クロスドメインがあり、上部オブジェクトがリダイレクトされることを示します。エラーが報告されている場合、クロスドメイン(またはフレームワークが使用されていない)がないことを示しますが、アクションは実行されません。
try {top.location.hostname;} catch(e){top.location.href = window.location.href;}これは正しく記述されており、IEとFirefoxで正しく実行できます。ただし、Chromeにはエラーが発生します。何らかの理由で、クロスドメインの状況では、ChromeはTOP.Location.HostNameにエラーを報告しません!
方法はありません。Chromeに別の補足コードしか追加できません。
{top.location.hostname; if(top.location.hostname!= window.location.hostname){top.location.href = window.location.href; }} catch(e){top.location.href = window.location.href;}OK、アップグレードされたバージョンコードが完了しました。ローカルドメイン名を除いて、他のドメイン名をフレームワークに埋め込むことはできません。
JavaScript関連のコンテンツの詳細については、このサイトのトピックをご覧ください:「JavaScript操作スキルの要約」、「JavaScriptアレイ操作スキルの要約」、「JavaScript数学的操作の使用の概要」、JavaScriptデータ構造とアルゴリズムスキルの要約「概要」、JavaScriptの概要スキル」、「JavaScriptアニメーションの特殊効果とスキルの要約、「JavaScriptエラーとデバッグスキルの概要」、「JavaScriptトラバーサルアルゴリズムとスキルの要約」
この記事がみんなのJavaScriptプログラミングに役立つことを願っています。