なぜ、空のiframeにスクリプトを読み込む2回目の試行が失敗しますか?私はページがロードされた後にスクリプトを読み込もうとしているので最初の失敗を理解していますが、2回目と3回目の試みが期待されます。私はそれがブラウザのセキュリティ制限されている可能性があると思ったが、通常はコンソールにエラーが表示され、<script>alert(1);</script>
のようなものでスクリプトを置き換えると正常に動作します。iframe src属性へのbase64コンテンツの読み込みが失敗することがある
HTML
<iframe id="blah1">
</iframe>
<iframe id="blah2">
</iframe>
<iframe id="blah2-2">
</iframe>
<iframe id="blah3">
</iframe>
Firefoxでこれを実行した後のjavascript
(function(){
var content = '<html><head></head><body>' + '<' + 'scr' + 'ipt src="//content.jwplatform.com/players/81b03hN1-8gn7GBWz.js"><\/'+'scr' + 'ipt'+'>' + '</body></html>';
//attempt 1
var $body = $('body', $('#blah1').get(0).contentWindow.document);
$body.html(content);
//attempt 2
$('#blah2').attr('src', "data:text/html;charset=utf-8," + escape(content));
//simple alerts work
$('#blah2-2').attr('src', "data:text/html;charset=utf-8," + escape('<sc' + 'ript>alert(1);</scr' + 'ipt>'));
//attempt 3
var doc = $('#blah3').get(0).contentWindow.document;
doc.open();
doc.write(content);
doc.close();
})();
私は、base64はiframeがHTTPとして扱われるので、それは働いていないので、多分いくつかのSSL関連のエラーを参照してくださいウィンドウが表示されますが、sslエラーについてはクロムコンソールには何も表示されないので、関連性がない可能性があります。
をロード
window.location.href.indexOf("https")
やっているしかしとしてHTTPとHTTPSを切り替える扱うんあなたは質問しますが、なぜこれをしていますか? '+' <'+' scr '+' ipt'? – abimelex@abimelex jsfiddleは、スクリプト内にあるスクリプトタグについて不平を言っています。また、ブラウザによってはセキュリティ上の理由からスクリプトを書くことができないことがあります(この場合、jsがそれを実行します) – Snipzwolf