【问题标题】:Include jQuery, if not included already包括 jQuery(如果尚未包括)
【发布时间】:2012-04-29 09:50:35
【问题描述】:

如果页面中尚未包含 jquery,我想将其包含在文件中。 我该怎么做?

我写了这个,但它给出了不想要的输出。

<script type="text/javascript">
if ('undefined' == typeof window.jQuery) {
    // jQuery not present
//  alert("Jquery Unavailable");
<?php echo '<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js"></script>'; ?>
} else {
    // jQuery present
    alert("Jquery Available");
}
</script>

【问题讨论】:

标签: javascript php jquery


【解决方案1】:

你不能在 PHP 中做到这一点。试试这个

<script type="text/javascript">

if(typeof jQuery == 'undefined'){
        document.write('<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js"></'+'script>');
  }

</script>

【讨论】:

  • onloadhander assignment 的这种风格有被覆盖的风险。在onload 事件触发后调用document.write 也会破坏现有文档!
  • @Sethunath:您的代码和我的代码都不起作用。当我在页面中执行此操作时,内部 之后的结尾将出现在页面 '); }
  • link 他们从不解释使用 document.write 的危险
  • 使用这个有一个警告 - A Parser-blocking, cross site (i.e. different eTLD+1) script, http://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js, is invoked via document.write. This MAY be blocked by the browser in this or a future page load due to poor network connectivity. If blocked in this page load, it will be confirmed in a subsequent console message.See https://www.chromestatus.com/feature/5718547946799104 for more details.
【解决方案2】:
<script type="text/javascript">
    if(typeof jQuery == 'undefined'){
        var oScriptElem = document.createElement("script");
        oScriptElem.type = "text/javascript";
        oScriptElem.src = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js";
        document.head.insertBefore(oScriptElem, document.head.getElementsByTagName("script")[0])
    }
</script>

【讨论】:

  • 许多其他答案将脚本标签放在脚本标签中。我更喜欢你的回答。我唯一的建议是不要费心检查 jQuery 的类型,只需将其与未定义进行比较。 if(jQuery == undefined)
  • 如果在上面的某些代码中重新定义了未定义,那么严格的未定义可能不是未定义的。但请务必做任何你认为最好的事情。
【解决方案3】:

您可以尝试以下方法:

<script>window.jQuery || document.write('<script src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js"><\/script>')</script>

【讨论】:

    【解决方案4】:

    您的 PHP 正在服务器上运行并输出一些文本。

    然后浏览器将该文本解释为 HTML 和 JavaScript。

    您不能在服务器上运行 PHP,在它已经发送到浏览器的文档中,以响应浏览器中运行的逻辑。

    您要么需要完全在 JavaScript 中执行此操作,要么更明智地整理您的服务器端逻辑,以便跟踪是否包含 jQuery。

    【讨论】:

      【解决方案5】:

      如果你想用 PHP 做,我认为更好,你可以这样做

      • 在调用 load() 函数之前,创建一个变量,如:

        var load_script = '否';

      • load() 函数采用一个可选参数,您可以使用该参数向服务器发送数据。使用它来发布您之前创建的 load_script 变量,就像这样

        $('#receiver_div').load('mypage.html',{'load_script':load_script},function(html){

        //页面加载后要做的事情

        })

      • 然后在您正在加载的页面中,像这样捕获发布的值

        $load_script = $_POST('load_script');

      • 然后你可以像这样做一个if语句来排除你想要的脚本

      if($load_script != '否') {

      echo "&lt;script src="jquery.js"&gt;&lt;/script&gt;";

      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多