我可以阻止下载JavaScript文件吗?

我可以阻止下载JavaScript文件吗?,javascript,jquery,html,jquery-plugins,Javascript,Jquery,Html,Jquery Plugins,为什么我要阻止在HTML中下载JS文件?这是我的页面加载时间表: jQuery(1.2)已加载 已加载jQuery插件(扩展当前jQuery对象) 自定义JS加载 自定义JS使用document.write添加额外脚本 添加的额外脚本加载一个新的jQuery(1.4,但这并不重要) ->所以我的扩展不见了,因为它是一个新的jQuery对象 我不能做的是把(5)或(3)放在(2)之前。我正在使用Drupal(PHP框架),这些都是有贡献的模块。我也无法在第(3)点解析添加的脚本,因为它使用docu

为什么我要阻止在HTML中下载JS文件?这是我的页面加载时间表:

  • jQuery(1.2)已加载
  • 已加载jQuery插件(扩展当前jQuery对象)
  • 自定义JS加载
  • 自定义JS使用document.write添加额外脚本
  • 添加的额外脚本加载一个新的jQuery(1.4,但这并不重要)
  • ->所以我的扩展不见了,因为它是一个新的jQuery对象
  • 我不能做的是把(5)或(3)放在(2)之前。我正在使用Drupal(PHP框架),这些都是有贡献的模块。我也无法在第(3)点解析添加的脚本,因为它使用document.write


    所以我想也许我可以拒绝下载第二个jQuery脚本。目前我没有其他想法。但这可能是不可能的。你觉得怎么样?

    我能做的是在(6)之后再次加载jQuery扩展(2)。它可以工作,但不太好。

    不。即使您以某种方式阻止用户直接在浏览器中以您的.js为目标,当访问页面时,它仍然会下载到计算机的硬盘上。即使您设法阻止.js文件下载到访问者的硬盘,它仍然必须驻留在计算机内存中。没有办法保护您宝贵的源代码免受窥探。然而,混淆使其更加困难


    我能想到的唯一解决方案是让web应用程序渲染屏幕,拍摄屏幕快照,然后将图像发送给访问者。祝你好运。

    那么,下面是我的想法:

    我可以把它放在一个iframe中,而不是阻止JS,这使它成为一个沙盒环境,这样它就不会伤害其他任何东西。给你: 首先必须解析外部脚本,因为我将其作为字符串传递:

    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;
    }
    
    函数parse_str_to_js($txt){ $txt=str\u replace(“\\\”、“\\\\”、$txt); $txt=str\u replace(“,“\\”,$txt); $txt=str_replace(“\r\n”、“\n”、$txt); $txt=str_replace(“\n”、“\n”、$txt); $txt=str_replace('''.\u003E',$txt); 返回$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);
    });
    
    $(函数(){
    $(“#广告”).html(“”);
    var=”;
    document.getElementById('iframe\u广告').contentWindow.document.write(广告);
    });
    
    您不能编辑额外脚本中的代码吗?只需找到添加jQuery的位置并删除该部分代码。也许如果你发一个链接,我们可以帮你。我不这么认为。工作方式:这是一个广告脚本(第三方库)。我们的站点只从Adv.company服务器加载一个JS文件,然后这个脚本执行document.write,这会将额外的链接放入HTML代码中。因此,我认为我无法剪切/解析它。