Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何更改外部javascript的加载顺序_Javascript_Jquery - Fatal编程技术网

如何更改外部javascript的加载顺序

如何更改外部javascript的加载顺序,javascript,jquery,Javascript,Jquery,我有一个加载外部聊天脚本的网页,但是在我所有的CSS和jQuery启动之前加载了脚本,所以我的页面在几秒钟内看起来都一团糟。需要帮助了解如何在页面加载完成后启动聊天脚本…我认为可以通过将脚本添加到我的jQuery设置中来完成,但我不确定如何完成 这是代码,它是不言自明的,不需要熟悉实际的软件 <script> var online_text = "Chat Online Now"; var offline_text = "Chat Not Available"; var check_

我有一个加载外部聊天脚本的网页,但是在我所有的CSS和jQuery启动之前加载了脚本,所以我的页面在几秒钟内看起来都一团糟。需要帮助了解如何在页面加载完成后启动聊天脚本…我认为可以通过将脚本添加到我的jQuery设置中来完成,但我不确定如何完成

这是代码,它是不言自明的,不需要熟悉实际的软件

<script>
var online_text = "Chat Online Now";
var offline_text = "Chat Not Available";
var check_back = 1; // this lets the script check the operator status without being logged in
</script>
<script src="http://my.domain/chat/file.php"></script>

var online_text=“立即在线聊天”;
var offline_text=“聊天室不可用”;
var check_back=1;//这允许脚本在不登录的情况下检查操作员状态
我认为会发生的事情是,.php文件将使用必要的聊天链接写入我的在线或离线文本,这就是为什么我必须将脚本放在我希望聊天文本显示的位置

希望这是有意义的…希望社区能帮助我找到解决问题的方法。谢谢

更新:到目前为止,我就在这里,不幸的是#chaticon元素是空的,即使我用简单的文本替换脚本。顺便说一下,使用jQuery 1.4.2:

$(document).load(function() { 
var online_text = 'Chat Online Now'; 
var offline_text = 'Chat Not Available'; 
var check_back = '1'; 
$("li#chaticon").html('<script type="text\/javascript" src="http:\/\/my.domain\/chat\/file.php"><\/script>');
});
$(文档).load(函数(){
var online_text='Chat online Now';
var offline_text='聊天不可用';
var check_back='1';
$(“li#chaticon”).html(“”);
});

使用JQuery函数签出

它将推迟运行,直到您的整个文档被加载并准备就绪。

(前面提到过)将只等待DOM准备好进行操作(即,节点层次结构已完全构建)。但是,这不会等到加载了任何其他资源(图像、样式表等)之后,这听起来像是您想要做的事情

如果需要先加载所有这些附加资源,请使用。这将等待所有其他资源完成加载(因此页面将完全呈现)。

Stephen

根据Dave的建议,将
$(document).ready()
函数放在页面上,即:

$(document).ready(function() {
    var online_text = "Chat Online Now";
    var offline_text = "Chat Not Available";
    var check_back = 1;
    // do any other stuff here
});
另外,确保js文件加载在页面底部,就在关闭标签的前面,css加载在标签中。这可能会也可能不会对上述问题进行排序,但在页面配置方面被视为“良好实践”


jim

谢谢jmar777,我同意这里需要重新评估……聊天脚本是document.write、php/mysql和一些面向dom的东西的混合体。不值得玩弄几个小时


因此,我最终将我的原始帖子中的代码放入一个PHP函数,并将其返回到页面顶部的一个变量中,这样,它的编写时间会比在加载页面时动态编写的要早一点。我对我的CSS文件做了一些小的调整,这样在加载聊天脚本时页面上看起来很奇怪的部分就不会那么奇怪了。

听起来他需要先加载样式表和其他脚本,而$(document).ready()不会等待。你是说$(document).load()?谢谢!那么我应该把聊天脚本放在哪里呢?我想我把这三个变量和脚本包含在一个函数中,然后调用这个函数,我想在页面上加载聊天图标,但用$(document.load()将它括起来。当然,我不知道如何写出来:)这取决于其他脚本如何加载聊天模块。您的/chat/file.php文件是否实际发出JavaScript(以及正确的mime类型)?您提到脚本标记的位置也很重要(必须是文本应该呈现的位置),这听起来像是在做一个document.write()?查看聊天脚本或至少更好地了解其工作原理将非常有帮助。谢谢。首先,我意识到在jQuery中使用native.ajax函数加载文件可能会有问题,因为它是一个外部URL(在我的服务器上,但仍然使用http://protocol)。至于document.write()部分,是的,我查看了文件,似乎有一堆较旧的模型javascript正在使用。我不认为这会像我希望的那样可行,但我能够通过用PHP重写脚本代码来稍微提高性能,这将在大多数页面加载之前运行。您仍然可以使用$.ajax(例如,)使用完全解析的请求,只要它位于服务于容器页面的同一域上。不过,我仍然不确定我是否理解在您的file.php中会发生什么。它是JavaScript和标记的混合体吗?如果是这样,你会有很多麻烦。您最好只加载一些标记,并在事件处理程序进入DOM后以不引人注目的方式附加事件处理程序。浏览器(尤其是IE)不喜欢动态加载带有嵌入式脚本标记的HTML。如果它们包含document.write(),则更糟糕……如果我能提出建议,我认为您最好使用聊天模块重新评估您的需求。如果你需要这个层次的动态,你可能想考虑写更多的插件架构…e、 例如,$('#mylink')。单击(函数(){$('#某些容器')。聊天({/*选项*/});});顺便说一下,我意识到这必须在$(document).load()而不是$(document).ready()中运行,否则整个页面将作为聊天脚本重新加载(感谢堆栈溢出的回答!)