我在页面上有以下脚本,让我们说“child.html”。
我只希望浏览器看到函数opener.opener = opener; opener.close()
,如果引用的URL是脚本的if
语句中列出的那个(parent.html),否则我不想要浏览器看见了。
此脚本所在的页面是父页面的子页面(弹出窗口)。用户(希望)只会访问父页面,随后将打开此子页面并使用opener.opener = opener; opener.close()
功能同时关闭父页面。
该功能正常工作并完成我需要它做的事情(打开弹出窗口后关闭父节点)。 但是,如果直接访问子页面URL(换句话说,没有从父页面定向),那么显然没有父页面要关闭,我得到脚本错误:
'opener'为null或不是对象
我理解错误消息,因此如果引用网址不是 parent.html,我试图隐藏“开启者”,以便如果有人碰巧直接访问子页面,则开启者是隐藏且没有错误消息。
我需要在下面的脚本中进行哪些更改才能使其正常工作?
<script type="text/javascript">
//<![CDATA[<!--
if (document.referrer != '../parent.html') {
opener.opener = opener;
opener.close();}
else {}
//-->
//]]>
</script>
或者,我尝试写下以下内容:
<script type="text/javascript">
//<![CDATA[<!--
if (document.referrer = '../parent.html') {
return false;
} else {
opener.opener = opener;
opener.close();}
//-->
//]]>
</script>
但是返回脚本错误:函数外的'return'语句。
非常感谢您提供的任何帮助!
答案 0 :(得分:1)
如果您使用初始化开启变量放置AND
条件,那么您的第一个脚本是正确的:
if (document.referrer !== '../popup.html' && opener) { ... }
对于第二个,如果要使用return
语句,则必须写下函数:
<script type="text/javascript">
//<![CDATA[<!--
function(){
function myFunct() {
if (document.referrer === '../parent.html' || !opener) {
return false;
} else {
opener.opener = opener;
opener.close();
return true;
}
}
myFunct();
}();
//-->
//]]>
</script>
答案 1 :(得分:0)
感谢Dario提出的建议:)我重新编写了它并且以下脚本有效:
<script type="text/javascript">
//<![CDATA[<!--
if (document.referrer != '../popup.html' && opener) {
opener.opener = opener;
opener.close();}
//-->
//]]>
</script>