V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
JamesHopbourn
V2EX  ›  JavaScript

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

  •  
  •   JamesHopbourn · 2018-08-07 22:13:06 +08:00 · 2715 次点击
    这是一个创建于 2334 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想做一个 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');
    })();
    
    pandacat
        1
    pandacat  
       2018-08-07 22:34:59 +08:00 via Android
    是不是”问题?
    paloalto
        2
    paloalto  
       2018-08-07 22:38:42 +08:00
    if (title) {
    title = title.replace(/msg_title = |"/,'');
    }

    估计是可能有 title 取不到的情况
    JamesHopbourn
        3
    JamesHopbourn  
    OP
       2018-08-07 23:02:24 +08:00
    @paloalto 但是我是在微信文章页面做的测试,是取得到 title 的
    JamesHopbourn
        4
    JamesHopbourn  
    OP
       2018-08-07 23:02:50 +08:00
    @pandacat 我试着仅仅 replace msg_title 也没有生效
    8qwe24657913
        5
    8qwe24657913  
       2018-08-08 00:51:50 +08:00   ❤️ 1
    String.prototype.match() 要么返回 null,要么返回一个数组。即使一定能取到,你也要用 title[0].replace() 而不是 title.replace()
    airdge
        6
    airdge  
       2018-08-08 08:22:04 +08:00   ❤️ 1
    code.match 返回的是数组
    title = title[0].replace(/msg_title = |"/,'');
    airdge
        7
    airdge  
       2018-08-08 08:29:35 +08:00   ❤️ 1
    code = (document.documentElement.outerHTML);
    var re = /msg_title = "(.*)"/g;
    var title = re.exec(code) [1];
    zcxj138
        8
    zcxj138  
       2018-08-08 08:59:33 +08:00
    那个双引号有没有转义?
    JamesHopbourn
        9
    JamesHopbourn  
    OP
       2018-08-08 09:22:12 +08:00
    @8qwe24657913
    @airdge
    @airdge 确实是要用 title[0]才可以,感谢。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2601 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 10:22 · PVG 18:22 · LAX 02:22 · JFK 05:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.