jquery中使用load加载外部html文件,不执行JavaScript的解决办法

本文介绍使用jQuery load加载外部HTML文件时JavaScript不执行的问题及解决方案。推荐使用$.get方法加载外部页面,并将Script部分手动追加到目标元素中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近自己在写jquery的扩展插件

遇到个问题就是,使用load加载外部的html文件,但是加载了想要加载的内容之后,发现JavaScript不执行,并没有加载进来,上网看了看解决办法

找到答案如下

load加载的外部文件会把Script部分删除掉

所以推荐使用$.get来异步加载外部页面,具体代码如下


$.get('partial.html', function(result){
$result = $(result);

$result.find('#content').appendTo('#new_content');
$result.find('script').appendTo('#new_content');
}, 'html');


可在这里看例子
[url]http://plnkr.co/edit/Hj0cyTUV44BPrxiOvPpW?p=preview[/url]

参看
[url]http://stackoverflow.com/questions/16352371/jquery-load-ajax-not-executing-javascript-in-returned-html-after-appende[/url]
jQuery 的 `load()` 方法用于异步加载外部 HTML 并插入到目标元素中,如果直接加载可能会导致样式表(CSS)和脚本(JavaScript文件未正确关联。为了解决这个问题,可以采取以下几种策略: 1. **修改 `src` 或 `href`**: 当 `load()` 加载 HTML 时,确保将 CSS 和 JavaScript 文件的 `src` 或 `href` 属性也一起包含在内。例如,在 `load()` 函数内部,你可以添加类似这样的代码: ```javascript $('#target').load('page.html', function() { $('head').append('<link rel="stylesheet" type="text/css" href="styles.css">'); $('body').append('<script src="script.js"></script>'); }); ``` 2. **使用 `async` 和 `defer` 标签**: 对于外部 JS 文件,可以在 `script` 标签中设置 `async` 或 `defer`属性,以确保它们按需下载而是阻塞页面加载: ```html <script async src="script.js"></script> ``` 3. **延迟样式加载**: 使用现代浏览器支持的 `link[rel=preload]` 或者 `link[rel=stylesheet][async]` 来延迟 CSS 文件加载。 4. **使用 `$.getScript()` 或 `$.ajax()` 获取 JS**: 如果需要单独处理脚本加载,可以使用 jQuery 的 `$.getScript()` 或 `$.ajax({dataType: 'script'})` 方法,这样能更好地控制脚本加载。 5. **HTML5 History API 和 PushState**: 对于更复杂的单页应用,可以考虑使用 History API 管理 URL 变化,并通过事件监听器来更新内容和资源引用。 总之,确保链接的路径正确,采用异步加载机制,并根据需求调整加载顺序和时机,通常能解决 CSS 和 JS 文件加载失效的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值