JavaScript字符串中的JavaScript脚本标记

时间:2011-06-01 08:26:53

标签: javascript string script-tag

我遇到与此相同的问题:

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);

2 个答案:

答案 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));