这是我用来通过javascript获取查询字符串值的函数。
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
我也在调用这个函数:
function GenerateCode() {
var trendingitemvalue = getParameterByName('q');
alert(trendingitemvalue);
var script = "<script async src=\"//hashgurus.com/feed/Trendingat.js\"><\/script>";
script += "\n<div class=\"hg-trendingat-widget\" hg-trend=\"" +trendingitemvalue + "\"></div>"
codearea.value = script;
}
<textarea style="height: 40px; color: blue" id="codearea" onclick="SelectAll(this)"></textarea>
我想做什么? 我通过函数getParameterByName(&#39; q&#39;)获取查询字符串的值,然后构建脚本标记(var脚本)并将此值分配给textarea字段。
例如这是weburl: http://hashgurus.com/q.aspx?q=%23BDMELODI_161其中(q =#BDMELODI_161) 我得到q的值(这是查询字符串)和框架脚本值。脚本的最终值通过以下代码看起来像这样:
<div class="hg-trendingat-widget" hg-trend="#BDMELODI_161"></div>
但我确实需要查询字符串中的内容。预期结果应该是这样的:
<div class="hg-trendingat-widget" hg-trend="%23BDMELODI_161"></div>
另外,我需要正确处理查询字符串的单引号和双引号。 javascript中是否有任何函数可以对这些值进行编码?
答案 0 :(得分:1)
如果我没有误解你的目标,请使用
encodeURIComponent(trendingitemvalue)
应该为哈希问题做好工作,不是吗?
我刚测试了它并且它有效,返回&#34;%23&#34;替换&#34;#&#34;。
如果我误解了你的问题,请告诉我哪里错了,也许我可以帮助你!
亲切的问候。
答案 1 :(得分:1)
要像在网址中那样对其进行编码,您应该使用encodeURIComponent
。
之后要在HTML属性中安全地插入值,你需要对它进行HTML编码,但是在JS中没有简单的方法,你应该使用&#34;翻译&#34;使用本机调用标记或构建div:
var div = document.createElement('div');
div.setAttribute('hg-trend', encodeURIComponent(trendingitemvalue));
div.className = "hg-trendingat-widget";
//div.outerHTML will return <div...></div>