2013-07-17 70 views
1

我運行一個「strip out」版本的FB bigPipe,它的工作完美,除了jquery。當我以json格式解析jquery並附加到div標籤時,jquery停止工作。讓jquery以json呈現html格式工作的問題

您可以看到「bigPipe」 jQuery代碼我用here

的代碼得到這個工作是非常簡單的。在PHP:

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

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

我認爲問題是,我不添加window.addEventListener到窗口本身,而是div標籤我追加的內容。

在這裏,我卡住了。我該怎麼做呢?我如何讓這個jQuery在這個附加的HTML中工作?

這裏是它應該是如何工作的一個例子:

如果您嘗試從一個php文件問題,這個代碼occur.Do這樣的:

  1. 把JS代碼的jsfiddle在一個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文件,點擊點擊我!

+0

jQuery的?我沒有看到jsfiddle代碼中的任何jquery?你的意思是Javascript嗎? –

+0

你有一些javascript錯誤嗎?結果是什麼?你能給出更多的背景嗎? –

+0

@winner_joiner我更新了我的問題與教程如何這應該工作。試試吧,告訴我爲什麼不工作:) –

回答

0

問題已解決。這是js文件插入body元素的錯誤。修復該代碼後。我解決了它,現在一切都很完美。

如果有人嘗試使用此代碼,這裏的變化:

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); 
}