我正在尝试将外部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而不是主文档。
答案 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
?