如何在我的网站中动态地包含一个包含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所建议的那样),它的工作原理与此相同。我还删除了缠绕的标签。非常感谢所有帮助我的人!

+0

也许使用iframe,但也不是最好的主意。 – kangoroo

+0

它是什么类型的Javascript?你可以发布你的包含的代码(或者至少没有被执行的JavaScript部分)吗?请注意,'$(document).ready'事件仅在main.html初始就绪时触发,而不是在动态加载内容时触发。 – funkwurm

可以触发一个自定义事件通知您的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是无论如何执行。

+0

你的假设是对的。当我在onReady()事件之外调用JavaScript时,它的工作原理与此相同。我也删除了标签缠绕。非常感谢所有帮助我的人! –

+0

哦,并确保脚本执行放在'other.html'文件的末尾,以确保当你需要时,DOM中的元素存在于你的DOM中。 –

+1

完成:)感谢您的建议,我确实在顶部的脚本,并想知道为什么有些东西仍然有线,但后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.'); 
}); 

http://api.jquery.com/jQuery.getScript/