代码之家  ›  专栏  ›  技术社区  ›  itarato Randy Sugianto 'Yuku'

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

  •  0
  • itarato Randy Sugianto 'Yuku'  · 技术社区  · 14 年前

    1. 已加载jQuery(1.2)
    2. 已加载自定义JS
    3. 自定义JS使用文档.写入添加额外脚本
    4. 添加的额外脚本加载一个新的jQuery(1.4,但这并不重要)

    我不能把(5)或(3)放在(2)之前。我正在使用Drupal(PHP框架),这些是贡献的模块。我也无法在第(3)点解析添加的脚本,因为它使用文档.写入.

    所以我想也许我可以拒绝下载第二个jQuery脚本。目前我还不知道。但这可能是不可能的。你怎么认为?

    3 回复  |  直到 14 年前
        1
  •  1
  •   Sparafusile    14 年前

        2
  •  0
  •   itarato Randy Sugianto 'Yuku'    14 年前

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

        3
  •  0
  •   itarato Randy Sugianto 'Yuku'    14 年前

    所以,我想到了:

    首先必须解析外部脚本,因为我将其作为字符串传递:

    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>
    

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