javascript - 在 PHP 重定向中执行 Javascript

标签 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 header 重定向执行 Javscript 时,什么也没有发生,就像这样:

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

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

最佳答案

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

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

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

甚至可以使用 jQuery 或 Mootools 等库轻松实现,或者手动使用 eval ,让 Ajax 请求实际返回 Javascript 代码然后执行,让您更加灵活。

关于javascript - 在 PHP 重定向中执行 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21948654/

相关文章:

javascript - chrome 中的程序化书签

javascript - 如何在 sails.js 中使用 gruntfile.js 缩小所有 js 和 css 文件

javascript - 如何从 acf.maps 字段获取数据?

php - 在 PHP 中将变量传递给私有(private)类时出现问题

Firefox 中带有 CSP 的 Javascript 书签

javascript - 如何使从书签加载的JS文件的缓存失效?

javascript - 将超集数组叠加到顺序/顺序很重要的子集数组上(在 Javascript 中)

JavaScript 格式化 : must braces be on the same line as the if/function/etc keyword?

javascript - java函数保存从文件检索的文本区域内容

php - 有没有办法同时使用 PDO::FETCH_ASSOC 和 PDO::FETCH_OBJ ?