为什么此链接(在粘贴到网址栏中时有效)在单击时不起作用?

时间:2019-11-21 21:23:27

标签: javascript asp-classic html4

我遇到了一个非常奇怪的问题,我想出了解决方案,并且想与世界分享,所以我将在这里提出一个问题,然后自己回答。也许其他人会比我的人有更好,更彻底的答案。

我在网页上有此链接:

<a href="javascript:PreviewPersonalization('ShowGolfballPersonalization.asp?task=2&amp;ca=mixed&amp;t=1line&amp;c=%23FFCC00&amp;f=helvetica&amp;s=8pt&amp;l1=Test+Text&amp;l2=&amp;l3=&amp;logo=0')">Review Side 1 Personalization</a>

这是链接中引用的javascript函数:

function PreviewPersonalization(pageDesc) {
window.open(pageDesc,'','toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=750,height=650,left=0,top=0');
}

当我单击链接时,该函数运行并在单独的窗口中打开url,并且它运行该.asp页,但是会产生损坏的预览图像,好像url参数存在问题。

当我将链接文本复制到单独窗口的网址栏中,并剥离对PreviewPersonalization的调用时,效果很好。

当我将链接文本复制到JavaScript控制台并运行它时(去掉了链接文本的“ javascript:”部分,这样它就直接运行PreviewPersonalization函数,并传入链接文本中内置的参数),效果也不错。

因此,链接文本或url参数或JavaScript函数没有问题-怎么回事?为什么单击链接无效?

请继续关注这个奇怪的故事。

1 个答案:

答案 0 :(得分:0)

调试发现,传递给PreviewPersonalization函数的字符串具有#FFCC00而不是%23FFCC00。因此,该网址在那时是无效的,因此没有任何url参数都使其成为ShowGolfBallPersonalization.asp代码。

点击链接文本的行为导致浏览器在对链接文本进行JavaScript处理之前先对其进行URL解码。

什么怪胎? html doctype是4.01,我认为某处提到了“严格”​​模式,也许与此有关。但这对我来说很奇怪。无论如何,让JavaScript函数重新对URL进行编码以在单独的窗口中打开该URL即可解决此问题。