正则表达式替换方法不会从小书签添加新内容
Regex replace method doesnt add new content from bookmarklet
我正在尝试构建一个小书签,在字典(已解析的 json)之后的文本中添加一些元素。
为此,我使用了一个正则表达式对象和一个替换方法来添加新元素,但它没有添加任何东西。在脚本的各个阶段,我正在查看它是否正常工作(通过 firebug 中的控制台进行调试)所以我看到除了替换之外一切正常。
这是代码:
jj = jQuery.noConflict()
jj ->
escapedStr = (string)->
string.replace(/([.?*+^$[\]\(){}|-])/g, "\")
addTags = (pjson) ->
for i in [0...jj(".postauthor").length]
name = jj(".postauthor").eq(i).text()
if pjson.hasOwnProperty(name)
texto = jj(".postauthor").eq(i).parent().next().find(".postbody:first").text()
for x in pjson[name]
escCon = escapedStr x['concept']
#console.log escCon
change = new RegExp(escCon, "ig")
texto.replace(change, "<span class='concept'>#{escCon}</span>")
jj.ajax({
crossOrigin: true
url: "/something.json"
datatype: "json"
success: (data) ->
addTags jj.parseJSON(data)
})
小书签的代码是这样的:
if (!($ = window.jQuery)) {
script = document.createElement( 'script' );
script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';
script.onload=releasetheKraken;
document.body.appendChild(script);
}
else {
releasetheKraken();
}
function releasetheKraken() {
var jsCode = document.createElement('script');
jsCode.setAttribute('src', 'https://something/above_code.js');
document.body.appendChild(jsCode);
}
一切正常,但函数 addTags
中的最后一个替换。我是新手,所以我不知道我尝试的事情是否可行。你能给我一些建议吗?提前谢谢你。
最后我解决了这个问题,但我不明白为什么我的第一种方法不起作用。
我所做的是链接一些注入所需元素的 .html() 方法……比如用编辑过的元素替换整个大父元素:
texto.html(texto.html().replace(change,"<span class='concept'>#{x['concept']}</span>"))
似乎替换,在打开这个问题的代码中,只是替换内存中的东西,而不是在真实中注入任何东西HTML。
我正在尝试构建一个小书签,在字典(已解析的 json)之后的文本中添加一些元素。
为此,我使用了一个正则表达式对象和一个替换方法来添加新元素,但它没有添加任何东西。在脚本的各个阶段,我正在查看它是否正常工作(通过 firebug 中的控制台进行调试)所以我看到除了替换之外一切正常。
这是代码:
jj = jQuery.noConflict()
jj ->
escapedStr = (string)->
string.replace(/([.?*+^$[\]\(){}|-])/g, "\")
addTags = (pjson) ->
for i in [0...jj(".postauthor").length]
name = jj(".postauthor").eq(i).text()
if pjson.hasOwnProperty(name)
texto = jj(".postauthor").eq(i).parent().next().find(".postbody:first").text()
for x in pjson[name]
escCon = escapedStr x['concept']
#console.log escCon
change = new RegExp(escCon, "ig")
texto.replace(change, "<span class='concept'>#{escCon}</span>")
jj.ajax({
crossOrigin: true
url: "/something.json"
datatype: "json"
success: (data) ->
addTags jj.parseJSON(data)
})
小书签的代码是这样的:
if (!($ = window.jQuery)) {
script = document.createElement( 'script' );
script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';
script.onload=releasetheKraken;
document.body.appendChild(script);
}
else {
releasetheKraken();
}
function releasetheKraken() {
var jsCode = document.createElement('script');
jsCode.setAttribute('src', 'https://something/above_code.js');
document.body.appendChild(jsCode);
}
一切正常,但函数 addTags
中的最后一个替换。我是新手,所以我不知道我尝试的事情是否可行。你能给我一些建议吗?提前谢谢你。
最后我解决了这个问题,但我不明白为什么我的第一种方法不起作用。
我所做的是链接一些注入所需元素的 .html() 方法……比如用编辑过的元素替换整个大父元素:
texto.html(texto.html().replace(change,"<span class='concept'>#{x['concept']}</span>"))
似乎替换,在打开这个问题的代码中,只是替换内存中的东西,而不是在真实中注入任何东西HTML。