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