我遇到与此相同的问题:
Script tag in JavaScript string
但是我无法解决建议的解决方案的问题。我正在为jquery使用datatables插件。我从上面的线程尝试了不同的解决方案但没有工作我得到一个“$ is not defined”错误。如果我将var html设置为喜欢“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;
}
请注意,我也试图逃避所有&lt;和&gt;也在开场脚本标签中。同样的问题。 任何想法如何解决?
编辑:
找到解决方案,但无法回答我自己的问题,所以这里是:
jQuerys .html()函数剥离脚本标记。我在评论中发现了.html()的文档。
另一个问题是第三方函数cd_insertObject使用document.write()。
我的解决方案是复制+粘贴cd_insertObject但不是使用文档写我返回一个字符串然后我把这个字符串放在
$('td:eq(0)', nRow).html(html);
答案 0 :(得分:2)
该错误与您尝试注入&lt; script&gt;无关标签。错误“$未定义”意味着“$”未定义,它不存在,因此您无法通过$()
可能的原因是在包含jQuery之前包含此脚本,将jQuery脚本标记移动到加载此脚本的标记之上以修复它。
你也可能使用jQuery.noConflict()
,导致$不再引用jQuery。另一种可能性是,在包含jQuery和此代码之间,有代码将$重新定义为undefined:
$ = undefined;
答案 1 :(得分:2)
试试这在Firefox中取得成功
var scr="cd_insertObject('chemical/x-cdx',600,400,'rxncdxd','cdxfile.cdx',true,true)";
$('#deneme').html(eval(scr));