2014-01-23 71 views
1

我們都知道<script src="/something.js"></script>的作用。該文件被加載到頁面中並運行腳本。更改解釋腳本標記的默認瀏覽器行爲

有什麼方法可以覆蓋解釋<script>元素的默認行爲嗎?

我想要相同的語法(<script src='...'></script>),它只會從something.js(可能通過XHR/jQuery ajax)獲得代碼並將它傳遞給foo (...) {...}函數。那麼我會關心我會用它做什麼。

要澄清的問題:

我可以用很容易地創建一個僞<script>標籤替代:

<div data-script-src="/1.js"></div> 
<div data-script-src="/2.js"></div> 
<div data-script-src="/3.js"></div> 
<div data-script-src="/4.js"></div> 

然後在js身邊,我會做:

var $scripts = $("[data-script-src]") 
    , scriptContents = []; 
(function loadInOrder (i) { 
    if (!$scripts[i]) { alert("Loaded"); } 
    $.ajax($($scripts[i]).attr("data-script-src"), function (data) { 
     scriptContents[i] = data; 
     loadInOrder(++i); 
    }); 
})(0); 

但如何我可以用<script>替換div[data-script]嗎?例如,如何強制瀏覽器NOT加載具有data-load="false"屬性的<script>標籤?

+0

您可以使用jQuery的getScript加入的方法來達到同樣的效果? http://api.jquery.com/jquery.getscript/ – Askanison4

+0

我想你正在用它來分析...讓我們說其他網站:)。也許一些深層瀏覽器設置?或使用例如wget下載網站,並用其他東西替代

2

我不知道,這是否會回答你的問題,但是沒有更多的數據,我可以建議:

創建自己的PHP文件,將工作作爲一種門的。然後

如果需要添加你的 真正腳本類型將搜索 的MyScript標籤和運行JavaScript代碼
<?php 
    $file = file_get_contents(your_url); 
    $file = str_replace('<script', '<myscript', $file); 
    $file = str_replace('</script>', '</myscript>', $file); 
    echo $file; 
?> 

然後......

可以使用div元素以及(如果腳本並且您需要驗證):

substitute: '<script' -> '<div data-id="my-script" ' 
substitute: '<script' -> '</div>' 

如果您需要更多幫助,請填寫。請不要低估,因爲問題對我來說有點模糊:)。

PS。我不知道這些是否是來自互聯網的您的網站或網站,您希望覆蓋默認行爲。所以一定要小心你是什麼「file_getting_contents」,因爲這將直接回應到你的瀏覽器...... :)。

+0

我正在尋找客戶端唯一的解決方案... –

+0

好的。我會想更多,也許會想到一些東西:)。最好的祝福。 –

相關問題