You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery替换移除type属性的Script标签后未执行,如何触发脚本?

解决Cookie接受后外部脚本不执行的问题

浏览器首次解析<script type="text/plain">标签时,会判定这不是可执行的脚本类型,即便后续移除type属性,也不会重新触发脚本的加载与执行。针对你的场景(加载外部src脚本),推荐以下解决方案:

方法一:重新创建并插入标准脚本标签

直接提取原标签的核心属性,生成全新的<script>标签替换原节点,浏览器会自动加载并执行新标签指向的脚本:

jQuery('script[data-sid="extservice"]').each(function() {
    var $original = jQuery(this);
    // 创建新的script标签,保留原有的src和data-sid属性
    var $newScript = jQuery('<script>')
        .attr('src', $original.attr('src'))
        .attr('data-sid', $original.attr('data-sid'));
    // 替换原标签
    $original.replaceWith($newScript);
});

方法二:仅适用于内联脚本的方案(外部脚本不适用)

如果是内联脚本(非src引用外部文件),可以移除type属性后手动执行脚本内容,但此方法对你的场景无效,仅作补充参考:

jQuery('script[data-sid="extservice"]').each(function() {
    var $script = jQuery(this);
    $script.removeAttr('type');
    // 执行内联脚本内容
    eval($script.text());
});

关键原因说明

克隆原标签的方式之所以无效,是因为浏览器只会对新插入DOM的script标签执行加载逻辑,已解析过的DOM节点(哪怕克隆修改)不会被重新识别为可执行脚本。

内容的提问来源于stack exchange,提问作者Arerrac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 10:20:42