gpt4 book ai didi

javascript - javascript var 中的引用

转载 作者:行者123 更新时间:2023-11-28 02:29:50 27 4
gpt4 key购买 nike

我想做这样的事情:

<script>
var text = "this is some sample text that i want to replace";
var new_text = text.replace(/'/g, "\\'");
var new_text = text.replace(/"/g, "\"");
document.write(new_text);
</script>

但只要我的 var text var text = "this is some sample "text" that I want to replace"; 中有一个“,它就会破坏我的 JavaScript,因此我无法替换它。

我的 var 文本来自 modx CMS 微小的 mce 字段,因此它是一种像这样显示的 $ [[*content]]。

这是我的 modx 模板代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>[[*titrepage]]</title>
<style type="text/css">
div.code_view {
height:auto;
}

div.code_demo {

/* margin:1em auto 1.4em; */
border:1px solid #ddd;
width: 535px;
color: #112433;

}

div#content div.code_demo ul.demoLinks {
margin:6px 6px 10px;
}

div#infoDiv {
padding:0 8px 8px;
}



div#infoDiv h4 {
margin:4px 0;
font-size:1.1em;
}

</style>
<script src="http://aurorafilms.eskem-studio.com/assets/templates/aurora/js/dw_contentswap.js" type="text/javascript"></script>
<script type="text/javascript" charset="utf-8">

function init_ContentSwap() {
var swap1 = {
restoreDefault: false,
content: {
'old': "<h4>Synopsis</h4><p>[[*synopsis]]</p>",
'infos': '<h4>Infos</h4><p>[[*infos]]</p>',
'presse': "<h4>Presse</h4><p>[[*Presse:jsonEncode]]</p>",
'festivals': "<h4>Festivals</h4><p>[[*festival]]</p>"


}
}

dw_ContentSwap.setup(swap1);
}

dw_Event.add(window, 'load', init_ContentSwap);

</script></head>
<body>
<div id="page"> <ul class="demoLinks">
<li style="z-index: 10; width: 80px; position: relative; "><a href="#old" class="showInfo old">Synopsis</a></li>
<li style="z-index: 9; width: 80px; position: relative; left: -20px;"><a href="#infos" class="showInfo infos">Infos</a></li>
<li style="z-index: 8; width: 80px; position: relative; left: -40px;"><a href="#presse" class="showInfo presse">Presse</a></li>
<li style="z-index: 7; width: 80px; position: relative; left: -60px;"><a href="#festivals" class="showInfo festivals">Festivals</a></li>

</ul><div id="content" style="float: left;" >
<div id="text">
<!-- demo -->

<div class="code_demo">


<div id="infoDiv"><h4>Synopsis</h4><p>[[*synopsis]]</p></div>
</div>


<!-- end demo -->

<p class="clearer">&nbsp;</p></div> </div> </div>



</body>
</html>

那么最好的方法是什么?

最佳答案

问题是,您尝试将资源中的内容用作 JavaScript 字符串(由 modx 解析器注入(inject))。但是 javascript 中的硬编码字符串必须遵循一些规则(没有或只有转义换行符、正确引用)。因此,简单地在它周围加一些引号只会在最简单的情况下有所帮助。

要解决您的问题,请尝试以下操作:

1.创建一个新的 snippet ,名为 jsonEncode ,包含以下内容:

<?php
return json_encode($input);

2.将您想要使用资源内容的 JavaScript 代码更改为:

var text = [[*content:jsonEncode]];

链接:

<小时/>

更新

看到添加的代码,我建议采用不同的方法。正如我上面所描述的,如果您使用嵌套的 modx 变量,则可能会中断。我认为最节省的方法是将 js 中需要访问的任何内容渲染到隐藏的 div 中。并从该元素中提取 innerHTML

关于javascript - javascript var 中的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14398275/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com