1

FB bigPipe の「ストリップ アウト」バージョンを実行しましたが、jquery を除いて完璧に動作しています。jquery を json 形式で解析して div タグに追加すると、jquery が機能しなくなります。

ここで使用する「bigPipe」jquery コードを確認でき ます

これを機能させるためのコードは非常に単純です。PHP の場合:

$data = array(
        'id' =>  {div tag ID},
        'content' => {html content},
        'title' => {document title},
        'css' =>  {...},
        'js' => {...}
        );

$output = '<script>Test.render(' . json_encode($data) . ');</script>';

問題は、ウィンドウ自体ではなく、コンテンツを追加する div タグに window.addEventListener を追加する必要があることだと思います。

そして、ここで私は立ち往生しています。どうすればいいですか?この追加されたhtmlでこのjqueryを機能させるにはどうすればよいですか?

これがどのように機能するかの例を次に示します。

このコードを php ファイルから実行しようとすると、問題が発生します。次のようにします。

  1. jsFiddle からの js コードを js ファイルに入れ、通常は .php ファイルに含めます。php ファイルに div タグを作成し、「not_working」と呼びます。保存します。
  2. 空の .html ドキュメントを作成し、 のように div タグを追加して<div id="test">Click me</div>保存します。
    1. 新しい js ファイルを作成し、test.js という名前を付けます。このコードを入れてください:

$(関数() {

$("body").on("click","#test",function(){
    alert("You clicked me!!");
});         

});

保存。

  1. PHP ファイルで、これを追加します。$data = array( 'id' => "not_working", 'content' => {LINK and NAME to the HTML file you created!!}, 'title' => "Test", 'css' => "", 'js' => {LINK and NAME to the JS file you created!!}, );

  2. .php ファイルを実行し、[Click me!] をクリックします。

4

1 に答える 1

0

問題が解決しました。body要素へのjsファイルの挿入方法に誤りがありました。そのコードを修正した後。私はそれを解決し、今ではすべてが完璧に機能しています。

誰かがこのコードを使用しようとすると、次の変更が行われます。

function _addJsFile(filename) {
  var blody = document.getElementsByTagName("body")[0],
  script = document.createElement('script'),
  done = false;

  script.src = filename;
  script.type='text/javascript';
  script.onload = function() {
      if (!done && (!this.readyState || this.readyState === "loaded" || this.readyState === "complete")) {
        done = true;
        // Handle memory leak in IE
        script.onload = script.onreadystatechange = null;
        if (blody && script.parentNode) {
          blody.removeChild(script);
        }
     }
  };

  blody.appendChild(script);
}
于 2013-07-17T06:06:33.930 に答える