JavaScript 字符串中的 JavaScript 脚本标记

标签 javascript string script-tag

我遇到了同样的问题:

Script tag in JavaScript string

但是我无法通过建议的解决方案解决问题。我正在使用 jquery 的数据表插件。我从上面的线程尝试了不同的解决方案,但都没有用。我收到“$ is not defined”错误。如果我将 var html 设置为 like“test”,它工作正常。 String 中的脚本插入一个 ActiveX 控件 (IE) 或插件 (FF) 并显示来自数据库的数据。 在下面的代码中,var html 以某种方式破坏了脚本:

function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {         
    var dataURL = "'data:chemical/smiles," + aData[0] + "'";
    var html = '<script type="text/javascript">'
        + 'cd_insertObject("chemical/x-daylight-smiles", 182, 172,'
        + '"CDCtrl' + iDisplayIndexFull + '","","True","False","True",'
        + 'dataurl='+ dataURL + ');</scr' + 'ipt>'; 

    $('td:eq(0)', nRow).html(html); // here $ causes an error       
    return nRow;
}

请注意,我还尝试在开始脚本标记中转义所有 < 和 >。同样的问题。 任何想法如何解决?

编辑:

找到解决方案但无法回答我自己的问题所以这里是:

jQuerys .html() 函数去除了脚本标签。我在评论中发现了 .html() 的文档。

另一个问题是第 3 方函数 cd_insertObject 使用 document.write()。

我的解决方案是复制+粘贴 cd_insertObject 但我没有使用文档写入,而是返回一个字符串,然后我将这个字符串放入

$('td:eq(0)', nRow).html(html);

最佳答案

该错误与您尝试注入(inject) <script> 标签无关。错误“$ is not defined”的意思就是,“$”是未定义的,它不存在,因此你不能通过$()调用它。

可能的原因是您在包含 jQuery 之前包含此脚本,将 jQuery 脚本标记移动到加载此脚本的标记上方以修复它。

也有可能你用过<a href="http://api.jquery.com/jQuery.noConflict/" rel="noreferrer noopener nofollow">jQuery.noConflict()</a> ,导致 $ 不再引用 jQuery。另一种可能性是在包含 jQuery 和这段代码之间有将 $ 重新定义为未定义的代码:

$ = undefined;

关于JavaScript 字符串中的 JavaScript 脚本标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6198279/

相关文章:

python - 类型错误: 'in <string>' 需要字符串作为左操作数,而不是列表(列表理解)

javascript - 多个与单个脚本标签

java - 如何从字符串日期中检索分钟?

Javascript/我的动态函数安全吗?

javascript - 格式化输入数组,结果应该是 Angular 中以下给定格式的分组数组

javascript - Internet Explorer 10 和 11 在输入聚焦时删除占位符文本

C: 为什么字符串变量接受的字符多于它的大小?

seo - 使用 handlebars.js 时是否将 google 索引脚本标记作为内容

javascript - 如何将 &lt;script&gt; 放在框架集文档的 "body"中?

javascript - 试图让我的 JavaScript 计算出输入的 2 个数字,以便由电脑计算。