在PHP重定向中执行Javascript

时间:2014-02-22 02:02:45

标签: javascript php bookmarklet url-scheme

我一直在尝试使用PHP转发来制作一个模态窗口,该窗口只显示链接而当前页面上没有模态脚本。

使用PHP,您可以这样转发:

<?php
header( "Location: http://example.com" );

您也可以使用备用URL方案转发,例如,您可以打开如下所示的SMS消息:

<?php
header( "Location: sms:867-5309" );

例如,您可以让“http://yoursite.com/phone-number.php”在支持设备上启动短信对话,并保持您打开的页面。

我也看到人们使用URL Scheme“javascript:”从浏览器地址栏或书签中运行javascript。


我的问题是:每当我尝试使用PHP标头重定向执行Javscript时都没有任何反应,如下所示:

<?php
header( "Location: javascript:alert('hey!');" );

我的问题是:为什么它不会执行,有没有办法让它运作?

1 个答案:

答案 0 :(得分:5)

不,javascript URI方案只是一个虚假的non-standardized方案,浏览器允许它在锚元素中向后兼容以执行JS。它已被弃用了很长时间,支持正确的事件语法,如下所示:

<a onclick="alert('hey!')">Click me!</a>

如果要在重定向中执行Javascript,则应该反转该方法 - 而不是直接执行服务器请求,使用Ajax请求调用服务器端代码,然后使用onSuccess回调执行之后要运行的JS代码。

甚至可以轻松地使用jQuery或Mootools这样的库,或者手动使用eval,让Ajax请求实际返回Javascript代码然后执行,从而为您提供更大的灵活性。