为什么我的 JavaScript 在 Wordpress 管理员中不起作用?
Why is my JavaScript not working within Wordpress admin?
我正在开发一个 Wordpress 插件。我有几个 JavaScript 文件(还有几个 CSS 和 PHP 类)。使用浏览器的开发者工具,我调试和优化了脚本。所有这些都在各种浏览器(如 Firefox、Chrome 和 Safari)中完美运行。
但是这些脚本在我使用原生 Safari 的旧 iPad (iOS 9.3) 上不起作用。
更新:在 iOS 上 Chrome 也没有 javascript。
我现在有一个简单的脚本:
alert("Hello");
它在我的桌面浏览器上再次显示正常。
(我听说 Safari 限制使用 http: 的网站。不过我的网站使用 https:。)
我安装了另一个插件(我认为是“WP 工具”),在 WP 管理中,它在桌面上报告:“Javascript 正在工作......”。在 iPad 上它说“Javascript 工作不正常...”。其他非 WP 测试人员在 iPad 上显示,js 处于活动状态并正在工作。
在具有 'Twenty Twenty-One' 主题的全新 Wordpress 上进行测试 - 没有其他插件。
其他人可以证实这些结果吗?有变通办法吗?
我会添加评论,但还没有足够的声誉:)
移动浏览器可能不支持相同的功能、版本等 - 如果设备太旧,Apple 也不会总是允许应用程序更新。这意味着某些应用程序可能对 iOS 版本有限制。如果是这样,您应该检查它是否适用于更新的设备。
最近听说ES6中的一些功能在手机浏览器中完全无法使用,而且alert、confirm等弹窗在部分浏览器中被禁用。这个我没有亲自核实过,所以我不能确定也不能否认。
我首先要检查您的移动浏览器是否支持来自其他网站的脚本。如果是这样,我会继续确保脚本尽可能遵循 ES5 语法。
如果这不起作用,您可以删除所有脚本代码,然后将其一点一点地添加回去,以找出问题所在。在 WordPress 中调试时的另一个方便的“技巧”是将版本号设置为 fx。 time()
您 register/enqueue 脚本所在的位置。这样你就可以确保你的浏览器不会从它自己的缓存中提供旧版本的脚本。
希望对您有所帮助,希望您最终能弄明白
最快和最明智的解决方法是强制您的网络应用程序用户更新他们的浏览器版本,以便享受您网站的所有功能。这是因为浏览器如何解释您的脚本。这与您编写的脚本无关,而是您的脚本是如何编译或解释的。较旧的浏览器版本在构建浏览器时以最新的 JS 引擎为目标,并且至今仍保持传统。因此,这意味着您随着时间的推移编写的相同代码在较新版本的 JS 引擎中的编译或解释略有不同。
您可能拥有的唯一其他选择是构建或查找可使您的代码向后兼容旧版浏览器的库。这意味着您对您要定位的浏览器版本时正在工作的 JS 引擎有很好的了解。
我正在开发一个 Wordpress 插件。我有几个 JavaScript 文件(还有几个 CSS 和 PHP 类)。使用浏览器的开发者工具,我调试和优化了脚本。所有这些都在各种浏览器(如 Firefox、Chrome 和 Safari)中完美运行。
但是这些脚本在我使用原生 Safari 的旧 iPad (iOS 9.3) 上不起作用。
更新:在 iOS 上 Chrome 也没有 javascript。
我现在有一个简单的脚本:
alert("Hello");
它在我的桌面浏览器上再次显示正常。
(我听说 Safari 限制使用 http: 的网站。不过我的网站使用 https:。)
我安装了另一个插件(我认为是“WP 工具”),在 WP 管理中,它在桌面上报告:“Javascript 正在工作......”。在 iPad 上它说“Javascript 工作不正常...”。其他非 WP 测试人员在 iPad 上显示,js 处于活动状态并正在工作。
在具有 'Twenty Twenty-One' 主题的全新 Wordpress 上进行测试 - 没有其他插件。 其他人可以证实这些结果吗?有变通办法吗?
我会添加评论,但还没有足够的声誉:)
移动浏览器可能不支持相同的功能、版本等 - 如果设备太旧,Apple 也不会总是允许应用程序更新。这意味着某些应用程序可能对 iOS 版本有限制。如果是这样,您应该检查它是否适用于更新的设备。
最近听说ES6中的一些功能在手机浏览器中完全无法使用,而且alert、confirm等弹窗在部分浏览器中被禁用。这个我没有亲自核实过,所以我不能确定也不能否认。
我首先要检查您的移动浏览器是否支持来自其他网站的脚本。如果是这样,我会继续确保脚本尽可能遵循 ES5 语法。
如果这不起作用,您可以删除所有脚本代码,然后将其一点一点地添加回去,以找出问题所在。在 WordPress 中调试时的另一个方便的“技巧”是将版本号设置为 fx。 time()
您 register/enqueue 脚本所在的位置。这样你就可以确保你的浏览器不会从它自己的缓存中提供旧版本的脚本。
希望对您有所帮助,希望您最终能弄明白
最快和最明智的解决方法是强制您的网络应用程序用户更新他们的浏览器版本,以便享受您网站的所有功能。这是因为浏览器如何解释您的脚本。这与您编写的脚本无关,而是您的脚本是如何编译或解释的。较旧的浏览器版本在构建浏览器时以最新的 JS 引擎为目标,并且至今仍保持传统。因此,这意味着您随着时间的推移编写的相同代码在较新版本的 JS 引擎中的编译或解释略有不同。
您可能拥有的唯一其他选择是构建或查找可使您的代码向后兼容旧版浏览器的库。这意味着您对您要定位的浏览器版本时正在工作的 JS 引擎有很好的了解。