包括外部javascript文件

时间:2014-03-17 22:48:49

标签: javascript jquery

我正在尝试将外部JavaScript包含到文档中。假设外部js具有以下代码。

function myFunction() {
  console.log("hello");
}

我通过

从控制台中包含它
var script = document.createElement('script');
script.src = "http://myjs";
document.getElementsByTagName('head')[0].appendChild(script);

但是我仍然得到myFunction()是未定义的错误。以某种方式从页面上包含的php文件调用该函数。有趣的是,在文档中的head标签之后添加我的外部javascript不足以使它在加载的php文件中的函数调用之前。

问:在给定情况的情况下,我如何确保在php文件之前包含我的javascript?

编辑:这是所有来源的层次结构

mysubsite.com
  myfolder
    mypage.html

mysite.com
  myfolder
    main.php
    problem.php

problem.php正在调用函数myFunction(),但它还没有包含在任何地方。所以我尝试在外部js文件中定义函数并将其包含在mypage.html中,但是问题.php仍然出现在mypage.html中包含的javascript之前

编辑:

我认为真正的问题是我正在处理包含在主文档中的iframe。在这种情况下,有没有办法从控制台包含我的外部JavaScript文件在主文档中?从控制台包含脚本只会影响iframe而不是主文档。

2 个答案:

答案 0 :(得分:3)

您正在做的很好,但是您必须等待文件加载。大多数浏览器都会在脚本元素上引发load事件,尽管某些旧版本的IE使用onreadystatechanged代替。但是,既然你正在使用jQuery(来自问题上的标签),你就不用担心,你可以使用$.getScript

$.getScript("http://myjs", function() {
    // The script has been loaded, you can call myFunction now
});

答案 1 :(得分:0)

在JavaScript之前总是包含PHP。 PHP在服务器发送到客户端之前由服务器执行,而JavaScript则由客户端执行。

为什么你不能只在你的<script type="text/javascript" src="http:/myjs"></script>中定期head