【问题标题】:JavaScript execution works on Chrome and not WordPressJavaScript 执行适用于 Chrome 而不是 WordPress
【发布时间】:2021-04-06 16:59:14
【问题描述】:

我在 Chrome 控制台开发工具中运行此代码,它可以工作:

const params = new URLSearchParams(window.location.search);

if (window.location.href.indexOf("Phone") != -1) {
  $('.test111232 a').attr('href', 'tel:1 ' + params.get('Phone'));
}

if (window.location.href.indexOf("state") != -1) {
  $('.test111232234 a').attr('href', 'https://www.example.com/ddd?state=' + params.get('state'));
}

但是,当我使用 Elementor HTML 小部件将页面保存在 WordPress 上时,它只会更改页面上的第一个数字。

有什么想法吗?

【问题讨论】:

  • 不回答,但你为什么不直接检查params
  • @appleapple 谢谢,这是什么意思?我确实检查了它应该根据 URI 更改的每个地方,并且在 chrome 中它适用于所有位置但是当我保存在 wordpress 上时它不起作用
  • 你是如何将它“保存”在 wordpress 上的?您是否使用“入队”方法?您是否熟悉将样式表和脚本加载到 wordpress 页面?
  • @Ruvee 好问题,通过 elementor,它是一个具有代码小部件的插件,而不是通过备份/触摸文件来完成。最奇怪的是我运行了其他脚本并且一切正常。说到这个,由于某种原因,只有第一个属性在页面上发生了变化。
  • 您在浏览器控制台中是否收到任何警告或错误?为了测试它是否加载到页面上,就是删除所有内容并使用console.log("Testing from wordpress!");。如果它已加载到页面中,您将在控制台中看到该测试消息。如果您没有看到该测试消息,那么您就知道它根本没有加载。

标签: javascript jquery wordpress elementor


【解决方案1】:

好的,所以基本上修复错误的方法是添加以下内容:

$(document).ready(function()

在上面的代码之前,所以它看起来像这样:

<script>
$(document).ready(function() {
const params = new URLSearchParams(window.location.search);

if (window.location.href.indexOf("Phone") != -1) {
  $('.test111232 a').attr('href', 'tel:1 ' + params.get('Phone'));
}

if (window.location.href.indexOf("state") != -1) {
  $('.test111232234 a').attr('href', 'https://www.example.com/ddd?state=' + params.get('state'));
}
});
</script>

可能相关的一个方面。我有一个旧版本的 elementor pro,它可能会影响通过 html 小部件加载 js。

我有脚本的开始和结束标签,但由于某种原因它想要这个功能,然后它就起作用了。可能这就是它最初设想的方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 2011-03-01
    • 2013-06-29
    • 2017-11-22
    相关资源
    最近更新 更多