我不知道为什么这个链接不起作用,但我有一个Javascript重定向(window.opener.location),我通过URL传递了一些变量,并且当这些变量包含撇号时遇到问题。我在PHP中使用URLENCODE()来构建链接,看起来它在我转储源代码时正在做我需要的东西,但是当我点击链接时,Safari和Chrome都会在“www”处抛出“意外的标识符”错误。
这似乎告诉我,JS链接仍然被视为具有撇号而不是相当于撇号的%27?我正在使用一个名为“qqq'www qqq'www”的虚拟名称,其首字母和名字用于我的测试以尽可能多地打破。
这是我遇到麻烦的链接:
<a href="javascript:top.close();window.opener.location='../cust/maint_cust.php?action=del_are_you_sure&cust_id=249735&lname=Qqq%27www&fname=Qqq%27www'"><em>Yes</em></a>
但是,如果我更改链接以使用onclick而不是HREF,它可以工作吗?我意识到这是比href ='javascript:...'更好的编码方法。
<a href="#" onclick="top.close();window.opener.location='../cust/maint_cust.php?action=del_are_you_sure&cust_id=249735&lname=Qqq%27www&fname=Qqq%27www'"><em>Yes</em></a>
一切都是相同的,除了我打JS的地方。这可能是由于在编码/解码时处理HREF和onclick的方式吗?也许HREF在进行链接调用之前不对撇号进行编码,因为JS嵌入在HREF调用中?
任何对这种行为的见解都会受到赞赏,所以我可以更好地理解这里真正发生的事情。是的它有效,但不知道为什么让我感觉自己是一个更糟糕的开发者......
谢谢!
你的链接没有>结束起始<a
- 是的,不要使用href="javascript:
此外,如果您需要编码,请使用encodeURIComponent,最后在更改开启器之前不要尝试关闭窗口。
但为什么不给开启者和用户命名一个目标和一个setTimeout?
<a target="nameOfOpener"
href="../cust/maint_cust.php?action=del_are_you_sure&cust_id=249735&lname=Qqq%27www&fname=Qqq%27www"
onclick="setTimeout(function() {top.close()},100)"><em>Yes</em></a>