_<iframe>
_のリンクをクリックすると、_<iframe>
_ではなく新しいタブでリンクが開くようにしています。私は、人々が_<iframe>
_を通じて視聴しているコンテンツを制御できないことに注意してください。
$('a').setAttribute('target','_blank');
のように、JavaScriptを使用してこれを実行しようとしていますが、うまくいきません。 HTMLドキュメントにも_<base target="_blank">
_が含まれていますが、これもトリックではありません。
これは不可能ですか?それとも間違った場所で検索しているだけですか?前もって感謝します!
私はこれを期待します:
$('a').setAttribute('target','_blank');
..失敗する(サイレント-jqueryは通常、黙って失敗するため)。なぜなら、iFrameのコンテンツが別のドメインからのものである場合、それを含むページからiFrame内のページを操作する際にアクセスの問題があるためです。
つまり、自分のページがドメインa(例:mysite.com)からのものであり、iframeがドメインb(例:someothersite.com)のものである場合、Webブラウザーのセキュリティ動作では、JavaScriptを使用してiFrameコンテンツを操作し、 「アクセスが拒否されました」エラー。
Jquery以外のJavaScriptを使用すると、エラーが表示されます。親ページから、これのようなもの:
window.frames["iFrameName"].getElementsByTagName("a")[0].target="_blank"
エラーが表示されます。
残念ながら、これについて何ができるかわかりません。別のWebサイトを含めて1つのWebサイトを停止し、ロード後にコンテンツを変更して別のWebサイトを表示することは、意図的なことです。
これを回避する1つの方法は、サーバー(つまり、同じドメイン)でスクリプトを呼び出し、URLを渡すことです。スクリプトは、あなたが探していたページのコンテンツを取得し、それをブラウザーに逆流させるので、目的のWebページのコンテンツを取得できますが、そのアドレスはサイト内にあります。たとえば、phpの場合:
http://yourdomain.com/getURL.php?url=http:www.google.com
ただし、認証の問題に注意してください
親ウィンドウのページにあるすべてのリンクをロードするには、次を使用します。
<base target="_parent" />
それ以外の場合は、新しいウィンドウを使用します。
<base target="_blank" />
javaScriptを使用
var links= document.getElementsByTagName('a');
for (var i=0; i<links.length; i++){
links[i].setAttribute('target', '_top');
}
jqueryの使用
$('a').each(function() {
var a = new RegExp('/' + window.location.Host + '/');
if (!a.test(this.href)) {
$(this).attr("target","_top");
}
});
この解決策を確認してください: iframe内のリンクを新しいウィンドウで開く
または、parent.window.open( "{{your location}}");を試すことができます。
_target='blank'
_をonclick='window.open();'
に置き換えます
SetAttributeの代わりに$('a').attr('target','_blank');
を使用してください...