JavaScript 书签中添加 replace 后就无法正常执行

2018-08-07 22:13:06 +08:00
 JamesHopbourn

想做一个 JavaScript 书签,将当前阅读的微信标题提取出来,当我使用以下这段 js 代码时是可以正常运行的

javascript:(function(){
	code = (document.documentElement.outerHTML);
	title = code.match(/msg_title = ".*"/g);
	window.open('omnifocus:///add?note='+encodeURIComponent(window.location)+'&name=🔖 '+title+'&context=📕📕 Reading Lists'+'&estimate=05 mins&autosave=true');
})();

但是一旦加上一个 replace 之后(如下),这个 js 书签点击就没有反应了,这可能是什么原因?

javascript:(function(){
	code = (document.documentElement.outerHTML);
	title = code.match(/msg_title = ".*"/g);
	title = title.replace(/msg_title = |"/,'');
	window.open('omnifocus:///add?note='+encodeURIComponent(window.location)+'&name=🔖 '+title+'&context=📕📕 Reading Lists'+'&estimate=05 mins&autosave=true');
})();
2707 次点击
所在节点    JavaScript
9 条回复
pandacat
2018-08-07 22:34:59 +08:00
是不是”问题?
paloalto
2018-08-07 22:38:42 +08:00
if (title) {
title = title.replace(/msg_title = |"/,'');
}

估计是可能有 title 取不到的情况
JamesHopbourn
2018-08-07 23:02:24 +08:00
@paloalto 但是我是在微信文章页面做的测试,是取得到 title 的
JamesHopbourn
2018-08-07 23:02:50 +08:00
@pandacat 我试着仅仅 replace msg_title 也没有生效
8qwe24657913
2018-08-08 00:51:50 +08:00
String.prototype.match() 要么返回 null,要么返回一个数组。即使一定能取到,你也要用 title[0].replace() 而不是 title.replace()
airdge
2018-08-08 08:22:04 +08:00
code.match 返回的是数组
title = title[0].replace(/msg_title = |"/,'');
airdge
2018-08-08 08:29:35 +08:00
code = (document.documentElement.outerHTML);
var re = /msg_title = "(.*)"/g;
var title = re.exec(code) [1];
zcxj138
2018-08-08 08:59:33 +08:00
那个双引号有没有转义?
JamesHopbourn
2018-08-08 09:22:12 +08:00
@8qwe24657913
@airdge
@airdge 确实是要用 title[0]才可以,感谢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/477754

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX