从剪贴板中解析并添加url

时间:2009-04-14 12:37:55

标签: javascript regex url parsing bookmarklet

我需要一个javascript书签来抓取我在剪贴板中的网址解析出2个数字并创建一个新网址,并添加一个指向页面顶部的链接,单击该链接会将网址添加到我的书签菜单中。

说我有这样的网址

http://www.website.com/frontpageeditor.jhtml?sectionID=2844&poolID=6276
javascript:getPoolPageUrl(9800,22713)

然后我需要将数字添加到此网址

javascript:frames['content'].getPoolPageUrl(9800,22713)

然后将网址添加到框架“content”的顶部。

我已经在这方面做了很久,但我无法弄明白。



更新
我把东西放在一起,向你展示我需要的东西。这个不起作用。

有任何想法吗?

var url = window.clipboardData.getData('Text');
var reg = /(\d+)/g;
var matches = url.match(reg); //returns ["2844","6276"]
var newUrl = "javascript:frames['content'].getPoolPageUrl("+matches[0]+","+matches[1]+")";
var link = document.createElement('a');
link.src = newUrl;
frames['content'].document.body.appendChild(link);



UPDATE2
这有效。我能做些什么改变才能让它变得更好?

var url = window.clipboardData.getData('text');
var matches = url.match(/(\d+)/g);
var link = frames['content'].document.createElement('a');
link.href = "javascript:frames['content'].getPoolPageUrl("+matches[0]+","+matches[1]+")";
link.innerHTML = document.title;
frames['content'].document.body.appendChild(link);

3 个答案:

答案 0 :(得分:5)

好的,首先我认为你无法从java脚本中检索剪贴板中的文本,我猜如果可以,这将是一个主要的安全问题。

假设您有一个字符串中的剪贴板,您可以调用此函数:

var url = "http://www.website.com/frontpageeditor.jhtml?sectionID=2844&poolID=6276"; //clip
var reg = /(\d+)/g;
var matches = url.match(reg); //returns ["2844","6276"]
var newUrl = "javascript:frames['content'].getPoolPageUrl("+matches[0]+","+matches[1]+")";
frames['content'].document.getElementById("linkPlaceHolderWhereYouWantToAdd").href=newUrl;

答案 1 :(得分:2)

您在一个文档中创建元素,然后将其附加到位于另一个文档中的子元素。这不起作用。您需要在文档中创建要添加到其中的元素。

此外,a对象没有src成员,它使用href。

例如:

var link = frames['content'].document.createElement('a');
link.href = newUrl;
link.innerHTML = newUrl;
frames['content'].document.body.appendChild(link);

请注意,window.clipboardData是特定于IE的代码。

答案 2 :(得分:-1)

不允许JavaScript仅凭一个原因访问剪贴板的内容:安全性。

如果您不小心将信用卡号码或其他个人识别信息复制到剪贴板中,并且您访问了恶意网站,它可以轻松地抓取您的剪贴板并将其发送到服务器,直到您知道存在风险。因此,浏览器开发人员明确禁止它。