转义JS保留字(已经双重封装)

时间:2014-03-02 21:44:25

标签: javascript php

我有一个由一些PHP生成的JS函数,函数调用如下:

onClick=openPopup('".$row['imgname']."','".$row['adtitle']."','".$row['adviews']."')

现在这可行,除非$ row ['adtitle']的值包含JS关键字。将我的代码中的错误引起我注意的是“这个”这个词。有没有办法逃避这些值,我无法弄清楚,因为我已经在这次调用中使用了很多封装。

提前致谢。

编辑:
 openPopup('efc86f7223790e91f423ef1b73278435.jpg','THIS IS A TEST ADVERT 12345678','2') 此通话不起作用。

openPopup('eada91a6c1197d2f2320e59f45d8ca6b.jpg','is a test','2') 不过这个确实有效..

我唯一可以想象的是THIS,就像查看来源时一样,THIS后面的文字高度不同。

编辑2:这是我的功能:

function openPopup(imgname,adtitle,adviews) {
    document.getElementById('popup').style.display = 'block';
    document.getElementById('delimg').src = 'imgstore/' + imgname;
    document.getElementById('delAdTitle').innerHTML = adtitle;
    document.getElementById('delAdViews').innerHTML = adviews;
    document.getElementById('confirm').onclick = function() {
        location.href = '?delete=1&id=' + imgname;
    }
    }

1 个答案:

答案 0 :(得分:2)

也许这只是一个正确格式化的问题:

$onclick = 'openPopup('.json_encode($row['imgname']).','.json_encode($row['adtitle']).','.json_encode($row['adviews']).')';
echo 'onClick="'.htmlspecialchars($onclick).'"';

请注意,我们在此处滥用json_encode来引用JavaScript字符串文字。虽然我们不应该严格地说JSON strings are not a subset of JavaScript strings