为什么我要阻止HTML下的JS文件下载?好吧,这是我的页面加载时间表:
我不能做的是在(2)之前放(5)或(3)。我正在使用Drupal(PHP框架),这些是贡献的模块。我也无法在第(3)点解析添加的脚本,因为它使用document.write。
所以我想也许我可以拒绝下载第二个jQuery脚本。目前我没有其他想法。但这可能是不可能的。你觉得怎么样?
答案 0 :(得分:1)
没有。即使您以某种方式阻止用户直接在浏览器中定位您的.js,它仍会在访问该页面时下载到计算机的硬盘驱动器中。即使你以某种方式设法将.js文件保存下载到访问者的硬盘驱动器,它仍然必须驻留在计算机的内存中。没有办法保护您宝贵的源代码免受窥探。然而,混淆使其变得更加困难。
我能想到的唯一解决方案是让您的Web应用程序渲染屏幕,拍摄屏幕截图,然后将图像发送给访问者。祝你好运。
答案 1 :(得分:0)
我能做的是在(6)之后再次加载jQuery扩展(2)。它有效,但不是很好。
答案 2 :(得分: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);
});