如何在我的网站中动态地包含一个包含javascript
的html文件我有一个简单的导航栏,点击不同的项目会导致主要内容发生变化。从技术上讲,所有的工作都在一个单独的文件“main.html”中完成,该文件包含了所有内容,我使用jquery函数“load”来动态加载其他html文件,将其放置在main.html文件中。只要在嵌入的这些html文件中没有javascript,就可以工作。但有一个文件我想嵌入,它也有JavaScript代码,它应该在$(document).ready上执行。但是这绝不会发生 - 在JavaScript中没有错误,它只是永远不会被执行。我想这是因为我只改变了“main.html”的DOM,然后就没有“onReady”事件被触发。有人能给我一些关于什么是获得理想行为的最佳方式的想法吗?将JavaScript放在“main.html”中会导致事情发生,但这对我来说是不行的。如何在我的网站中动态地包含一个包含javascript
在此先感谢!
更新:问题解决了 问题解决了。当我在onReady()事件外调用javascript时(正如Loic Coenen所建议的那样),它的工作原理与此相同。我还删除了缠绕的标签。非常感谢所有帮助我的人!
可以触发一个自定义事件通知您的other.html
脚本的树被加载。我还没有尝试过,但我会用类似的东西:
在main.html中:
$('#div_to_load').load('other.html',{},function(){
$('#div_to_load').trigger('loaded')
})
在other.html
$('#div_to_load').on('loaded', function(){
// Code to execute
})
我不知道这是否可以做到这一点。
编辑:我asume,直接包含在你的other.html
JavaScript是无论如何执行。
你的假设是对的。当我在onReady()事件之外调用JavaScript时,它的工作原理与此相同。我也删除了标签缠绕。非常感谢所有帮助我的人! –
哦,并确保脚本执行放在'other.html'文件的末尾,以确保当你需要时,DOM中的元素存在于你的DOM中。 –
完成:)感谢您的建议,我确实在顶部的脚本,并想知道为什么有些东西仍然有线,但后chaning它一切工作正常:) –
你在main.html
包含头部,身体。问题可能是,当你加载页面时,你的其他页面也有一个头部和身体等等,如果你正在加载到一个div,它应该只是代码,可以是javascript,也可以是头部或身体。但是如果您拒绝,这里是您的解决方案
$("#loadnewpagebttn").load(location.href+" foobar ",function(){
$.getScript("js/yourscript.js");
});
您需要为该页面创建一个脚本文件并加载它。内嵌脚本有一些不好的习惯,反正
完整的例子是什么:
jQuery.getScript(url, [ success(data, textStatus) ])
url - A string containing the URL to which the request is sent.
success(data, textStatus) - A callback function that is executed if the request succeeds.
$.getScript('ajax/test.js', function() {
alert('Load was performed.');
});
也许使用iframe,但也不是最好的主意。 – kangoroo
它是什么类型的Javascript?你可以发布你的包含的代码(或者至少没有被执行的JavaScript部分)吗?请注意,'$(document).ready'事件仅在main.html初始就绪时触发,而不是在动态加载内容时触发。 – funkwurm