Javascript код, неопределенный строковый литерал с включенным javascript - PullRequest
2 голосов
/ 01 сентября 2010

Этот скрипт работает нормально, если только включенный файл не содержит 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 ]

3 голосов
/ 01 сентября 2010

Если file1.php или file2.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 голос
/ 01 сентября 2010

Удалить последнюю запятую из этой строки:

var myArray = [ 'url', 'url2', 'url3', 'url4', 'url5', ];
/*                                                   ^ */
0 голосов
/ 01 сентября 2010

Если во включаемых файлах есть разрывы строк, это вызывает ошибку. Например:

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