0

このコードは機能します:

(function() {
        var scr = document.createElement('script');
        var head = document.getElementsByTagName('head')[0];
        window.insert = function(data) {
                alert(data);
        };
        scr.src = 'http://nocore.info/test.php?callback=insert';
        scr.type = 'text/javascript';
        head.appendChild(scr);
})();

jsFiddle を使用してテストされています。JSONp を介して文字列を取得し、警告を発します。

次のコードも同様です。

(function(){var a=document.createElement("script"),b=document.getElementsByTagName("head")[0];window.insert=function(a){alert(a)};a.src="http://nocore.info/test.php?callback=insert";a.type="text/javascript";b.appendChild(a)})();

しかし、URL バーに javascript: と入力してからこのコードを入力しても、何も表示されません。これはなぜですか?私はそのような行動を認識していません。URL バーに window.* 変数を設定でき、DOM を操作できます。

それで、ここで何が問題なのですか?

みんなありがとう。あなたの助けに感謝。

4

2 に答える 2

1

It just doesn't work when you're on Google. I've tried it on a different page and it works.

Google でも動作します。<script>でタグを見つけることができます<head/>。ただし、ポップアップする警告ウィンドウはありません。その理由は次のとおりです。

Can someone please explain why this is?

Google は https を使用しており、ウェブサイトが HTTPS ページを配信している場合、このページで HTTP 経由で配信されるアクティブな混合コンテンツはすべてデフォルトでブロックされます。ChromeおよびFirefox(他のブラウザはテストしていません。)

つまり、サイトが安全な SSL で実行されている場合、ブラウズは外部の http ソースからの安全でないコンテンツをブロックします。あなたの場合、それはhttp://nocore.info/test.php?callback=insert. コンソール パネルを開くと、次のようなエラー/警告が表示されます。

[blocked] The page at https://www.google.com/ ran insecure content from http://nocore.info/test.php?callback=insert.

直し方:

  1. セキュア SSL をサポートする別のホストを使用してください。https://yournewhost/test.php?callback=insert動作します。一般的な JavaScript ライブラリについて話している場合は、https をサポートする Google、Microsoft などの CDN を使用してください。
  2. Chrome を例にとると、"-allow-running-insecure-content" という Chrome のコマンド ライン パラメーターを使用して、安全でないコンテンツ チェックを無効にします。[お勧めしません]

混合コンテンツとその表示方法について - ナレッジベース

于 2013-10-31T03:01:49.223 に答える
0

OK、明らかに@Wayneは正しいです。Google を使用しているときは機能しません。別のページで試してみましたが、うまくいきました。誰かがこれがなぜなのか説明してもらえますか? 彼らの JavaScript はどのようにしてこのコードを「武装解除」できるのでしょうか?

于 2013-10-30T16:52:05.077 に答える