2016-03-11 62 views
0

我很確定這是一個愚蠢的問題,但我搜索並找不到類似/相同的場景。Javascript無法處理從另一個來源提取的內容

所以,我有一個主要的PHP頁面,其中包括幾個Javascript文件在HTML的head部分。然後在某個時候,我通過file_get_contents從外部源獲取內容(HTML + Javascript)並將其輸出到主頁面。

這個新輸出通常會從主頁面拾取CSS樣式,但是任何依賴於加載在main上的JavaScript代碼都不起作用。即使我把主要頁面中的document.ready所需的Javascript放在裏面,它仍然不起作用。

只是爲了舉例說明代碼:

<html> 
<head> 
<link href="style.css" rel="stylesheet"> 
<script src="somejslib.js"></script> 
</head> 
<body> 
Some HTML here generated by PHP 
<?php 
$content = file_get_contents('http://whatever/page'); 
echo $content; 
?> 
</body> 

在抓住內容,我會碰到這樣的:

<div> 
<form> 
<input type="text" id="bla"> 
</form> 
</div> 
<script>$('#bla').datepicker({ somecodehere });</script> 

datepicker被列入主要的頁面加載的庫,但不管用,不管我把這個代碼放在哪裏。

任何提示?

P.S:它工作的唯一方法是如果我再次包含新內容中的所有Javascript庫,這當然不是解決方案。

+0

你可以使用$ window.load方法。 – eronax59

+0

已經嘗試過。 :( –

+1

嘗試$(文件)。就緒(函數(){$( '#BLA')日期選擇器({somecodehere});}); – codeGig

回答

0

確保您連接監聽器的外部內容加載後或使用on()事件處理 http://api.jquery.com/on/

附:我現在看到您的代碼實際上缺少了document.ready,因此不會在執行前等待文檔加載。我不確定哪些適用於您的實際代碼,因爲您只發布了一個示例。如果您通過Ajax拉內容例如適用第一個解決方案,否則剛準備

+0

已經嘗試過document.ready,既在新內容中也在主頁上。 –

0

解決文檔中換東西了。

顯然這是我一直以來的錯誤。我多次加載Jquery(也是不同的版本)。

似乎並非所有版本的jQuery都可以處理這種情況。