Javascript代码,包含javascript的未终止字符串文字

时间:2010-09-01 01:57:12

标签: php javascript string include literals

此脚本工作正常,除非包含的文件包含javascript,然后它会中断“未终止字符串”文字错误。删除空格和换行符并不能解决问题。

<script type="text/javascript">
var myArray = [
'url',
'url2',
'url3',
'url4',
'url5',
];
var i, numDomains = myArray.length, found = false;
for (i = 0; i < numDomains; i++) {
if (document.referrer.indexOf(myArray[i]) > -1) {
found = true;
}
}
document.write((found ? '<?php include("file1.php"); ?>' : '<?php include("file2.php"); ?>'));
</script>

一个好的解决方案是包含的文件可以是任何普通的html文件。

这是违规文件的输出:

<!-- google_ad_client = "pub-0705348955426556";/* ORG 468x60 */ google_ad_slot =     "2106718798";google_ad_width = 468;google_ad_height = 60;
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><script src="http://googleads.g.doubleclick.net/pagead/test_domain.js"></scri

3 个答案:

答案 0 :(得分:3)

如果file1.phpfile2.php输出任何包含未转义'个字符或换行符的内容,则会产生您收到的消息。

尝试从违规文件中删除所有换行符,其输出如下所示:

 <!-- google_ad_client = "pub-0705348955426556";/* ORG 468x60 */ google_ad_slot = "2106718798";google_ad_width = 468;google_ad_height = 60; --><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script<script src="http://googleads.g.doubleclick.net/pagead/test_domain.js">

答案 1 :(得分:1)

从此行删除最后一个逗号:

var myArray = [ 'url', 'url2', 'url3', 'url4', 'url5', ];
/*                                                   ^ */

答案 2 :(得分:0)

如果包含文件中有换行符,则会导致错误。例如:

var a = "abc
adada"; // may cause error