书签中的字符串操作不像在控制台中那样

时间:2012-07-23 22:29:16

标签: javascript regex string google-chrome bookmarklet

在谷歌Chrome控制台中,这可行(它表示弹出窗口被阻止,但现在不介意)

open('http://www.bugmenot.com/view/'+(escape(location).replace(/^\w+%3a\/\//i,'').replace(/\/.*/i,'')));

弹出窗口在http://www.bugmenot.com/view/thesite.com

处打开

现在,这不适用于书签:

javascript:open('http://www.bugmenot.com/view/'+(escape(location).replace(/^\w+%3a\/\//i,'').replace(/\/.*/i,'')));

不会打开完全相同的网址,而是打开http://www.bugmenot.com/view/http%3A

为什么吗

2 个答案:

答案 0 :(得分:1)

试试这个:

javascript:open('http://www.bugmenot.com/view/'+(escape(location).replace(/^.*?\/\/([^\/]*).*$/i, "$1")));

答案 1 :(得分:1)

导致此问题是因为%3a在网址栏或书签中被解释为:

javascript:alert('%3a');

将被解释为

javascript:alert(':');

正如此值对正则表达式的影响,随之而来的是相关后果。