2010-09-08 56 views
0

爲什麼我想阻止在HTML中下載JS文件?好了,這是我的分時圖表的頁面加載:我可以阻止下載JavaScript文件嗎?

  1. 的jQuery(1.2),裝
  2. 加載
  3. jQuery插件(擴展當前jQuery對象)
  4. 定製JS加載
  5. 定製JS使用的文件.WRITE添加額外的腳本
  6. 添加額外的腳本加載一個新的jQuery(1.4,但它並不重要)
  7. - >所以我的擴展走了,因爲它是一個新的jQuery對象

什麼我不能做的就是把(5)或(3)(2)之前。我正在使用Drupal(PHP框架),這些都是貢獻模塊。我也無法解析第(3)點添加的腳本,因爲它使用document.write。

所以我想也許我可以拒絕第二jQuery腳本的下載。目前我沒有其他想法。但那可能是不可能的。你怎麼看?

+0

你不能編輯從額外的腳本代碼?只需找到它添加jQuery的位置並刪除那部分代碼即可。也許如果你發佈了一個鏈接,我們可以幫你。 – DisgruntledGoat 2010-09-08 16:25:46

+0

我不這麼認爲。它的工作方式:這是一個廣告腳本(第三方庫)。我們的網站只從Adv中加載1個JS文件。公司服務器,比這個腳本執行一個document.write,這將額外的鏈接放到HTML代碼中。所以我不認爲我可以削減/解析它。 – itarato 2010-09-08 19:26:50

回答

0

所以,這裏就是我想出了:

而是防止JS那我可以把它變成一個iframe的 - 它使一個沙盒環境,因此它不能傷害任何東西。在這裏,您是: 首先,外部腳本已經被解析,因爲我把它作爲一個字符串:

function parse_str_to_js($txt) { 
    $txt = str_replace('\\', '\\\\', $txt); 
    $txt = str_replace('"', '\\"', $txt); 
    $txt = str_replace("\r\n", '\n', $txt); 
    $txt = str_replace("\n", '\n', $txt); 
    $txt = str_replace('<', '\u003C', $txt); 
    $txt = str_replace('>', '\u003E', $txt); 
    return $txt; 
} 

然後在HTML代替:

<php echo $advertisement_script; ?> 

應及時更換,一個佔位符:

<div id="advertisement"></div> 

而在JavaScript中的iframe將被創建:

$(function(){ 
    $('#advertisement').html('<iframe id="iframe_advertisement"/>'); 
    var advertisement = "<?php echo parse_str_to_js($advertisement); ?>"; 
    document.getElementById('iframe_advertisement').contentWindow.document.write(advertisement); 
}); 
0

什麼我能做的就是重新加載jQuery的擴展(2),(6)之後。它有效,但不好。

1

號即使以某種方式阻止用戶直接在瀏覽器中針對您的.js,被訪問的頁面時,它仍然會下載到計算機的硬盤驅動器。即使你以某種方式設法避免.js文件下載到訪問者的硬盤驅動器,它仍然必須駐留在計算機的內存中。無法保護您的寶貴源代碼免受窺探。但是混淆使得它更加困難。

我能想到的唯一的解決辦法是讓你的web應用程序呈現在屏幕上,採取了截屏,並將圖像發送給訪問者。祝你好運。