Javascript 这个返回正确吗
此返回是否正确写入,代码如下:Javascript 这个返回正确吗,javascript,Javascript,此返回是否正确写入,代码如下: <script type='text/javascript'> //<![CDATA[ $(window).load(function(){ $(window).on('beforeunload', function(){ return <?php // Log out when browser is closed echo " location.href=\"/logout.
<script type='text/javascript'>
//<![CDATA[
$(window).load(function(){
$(window).on('beforeunload', function(){
return
<?php
// Log out when browser is closed
echo " location.href=\"/logout.php?task=EndLive&webcam_id=".$_GET['webcam_id']."\"";
?>
;
});
});//]]>
</script>
//
;
});
});//]]>
返回值写得正确吗?有没有正确的方法来编写它?它写得不正确-我可以这样说,而不管PHP的实际结果是什么。(不过,为了解决与HTML/JavaScript相关的问题,您应该将实际发送的HTML/JS发布到客户端。)
问题是return
是一个受限的产品,它会“过早地插入隐式分号”
也就是说,这两者是不同的:
PHP代码最多只能生成与后者类似的内容,因此是不正确的。return
语句将在location.href
运行之前终止该函数-并且浏览器位置不会更改
首先,我将return
语句移动到函数的末尾,并提供一个适当的值。(另外,如果我记得的话,IE有一些怪癖,在本例中应该使用event.value而不返回?YMMV。)
当然,即使修复了上述语义语法问题,也可能存在其他问题-但每次只解决一个问题:)它不会工作,因为在beforeunload中,您无法将用户重定向到另一个页面(javascript限制)返回的值必须是字符串,浏览器稍后会将其显示为警报。请记住:Javascript不是Java。我不知道它应该做什么(为什么要返回一条语句,将值赋给location.href?),但它肯定不是“正确的”。除此之外,它还包含一个巨大的XSS漏洞。混合使用PHP和JavaScript很少是一个好主意,并且经常会导致服务器端代码和客户端代码的混淆,但是如果您完全了解发生了什么,您可能就没事了,尽管这不是很优雅(正如所指出的,是一个很大的代码注入风险)仅供参考,没有理由等待
$(window).load()
将处理程序分配给窗口
。显然,如果窗口
可用于分配加载
处理程序,那么它也可用于在卸载之前分配处理程序。
function f() {
return "x" // same line
}
function g() {
return // newline after return - ASI kicks in!
"x" // this line is NEVER EXECTURED
}
f() // -> "x"
g() // -> undefined