Wordpress swapping && for Html 编码在 JS <script> 标签中



我想使用HTML块在页面上实现一个简单的脚本,其中JS函数封装在脚本标记中。

但当它被呈现时,它会使用&&运算符,并将其转换为与符号的HTML字符代码(&#038;&#038(。我已尝试缩小它,更改条件语句,但无法运行它。我知道代码很好,因为我在控制台中测试了它,它运行得很好。我认为Wordpress处理它时只是有一些问题。

目前,我无法使用functions.php文件实现此功能。需要在页面上实现。

下面是我正在实现的代码

<script>
const mainNavLinks = document.querySelectorAll(".wp-block-senff-sticky-block ol li a");
window.addEventListener("scroll", event => {
let fromTop = window.scrollY - 600;
mainNavLinks.forEach(link => {
let section = document.querySelector(link.hash);
if ( section !== null && section.offsetTop <= fromTop && section.offsetTop + section.offsetHeight > fromTop ) {
link.classList.add("current");
} else {
link.classList.remove("current");
}
});
});
</script>
Here is the output:
<script>
const mainNavLinks = document.querySelectorAll(".wp-block-senff-sticky-block ol li a");
window.addEventListener("scroll", event => {
let fromTop = window.scrollY - 600;
mainNavLinks.forEach(link => {
let section = document.querySelector(link.hash);
if ( section !== null&&section.offsetTop <= fromTop&#038;&#038;section.offsetTop + section.offsetHeight > fromTop ) {
link.classList.add("current");
} else {
link.classList.remove("current");
}
});
});</script>

如果有人再次遇到这种情况,就像我今天所做的那样,我发现了一个非常快速的&这里的简单修复:

您必须在脚本标记后添加HTML注释标记:

<script type="text/javascript">
<!--
myfunction();
//--></script>

您可以使用嵌套条件作为解决方法:

if ( section !== null } {
if ( section.offsetTop <= fromTop ) {
if (section.offsetTop + section.offsetHeight > fromTop ) {
link.classList.add("current");
} 
}
}

我相信您可以通过在functions.php文件中添加以下内容来停止转换实体。

function force_decode_entities( $content ) {
//Ensure this only runs on a specific page of your choice
if( is_page('your-page-slug-here') ) {
return decode_entities( $content );
}
return $content;
}
add_filter( 'the_content', 'force_decode_entities', 1 )

我添加了if()语句,因为如果全局应用它,它可能会停止正常使用代码块,因为它会将它们呈现为浏览器将解释的文字代码。

不过,值得指出的是,您不应该从管理员那里运行代码。这只是不好的做法。

最新更新