使用bookmarklet更改url
Change url with bookmarklet
尝试编写一个javascript bookmarklet,从前端链接跳转到CMS编辑页面链接。
所以取一个类似的url
http://www.example.com/events/13097/article
并制作一个类似的url
http://www.example.com/admin/edit.php?class=events&id=13097
我想我需要使用regex来获取类和id,然后将其包装成一个javascript函数——但我是一个绝对的初学者,不知道是否有人能让我开始?
您不需要正则表达式,请尝试以下操作:
var url = ""+window.location;
var urlparts = url.split('/');
window.location = "http://www.example.com/admin/edit.php?class="+urlparts[3]+"&id="+urlparts[4];
从URL中分离类和id,并在重定向中重复它们。第一行将window.location
强制转换为字符串,您也可以使用String(window.location)
来执行此操作,但这更为详细。
要获取域名,您可以使用:
"http://"+urlparts[2]+"/admin/edit.php?class="+urlparts[3]+"&id="+urlparts[4]
EDIT:实际上,您可以使用window.location.href.split('/')
获得urlparts
,或者在window.location
对象中模拟原始代码window.location.toString().split('/')
其他感兴趣的项目(本文中的示例)
hash: "#10013173"
host: "stackoverflow.com"
hostname: "stackoverflow.com"
href: "https://stackoverflow.com/questions/10012966/change-url-with-bookmarklet/10013173#10013173"
origin: "http://stackoverflow.com"
pathname: "/questions/10012966/change-url-with-bookmarklet/10013173"
port: ""
protocol: "http:"
search: ""
//var str = window.location.href;
var str = "http://www.example.com/events/13097/article";
var re = /events'/('d+)'//;
var match = str.match(re);
var newURL = "http://www.example.com/admin/edit.php?class=events&id=" + match[1];
alert(newURL);
这里有一个在C#单元测试中使用的Regex示例。由于您不熟悉regex,所以该模式与源url相同,只是有两个捕获组:一个用于类(?<class>[^/]+)
,另一个用于id (?<id>[^/]+)
。每种方法的工作原理是,它使用一个或多个不是斜杠(^/)
的字符(加号),并将其存储在尖括号中名称的正则表达式组中。
var source = "http://www.domain.com/events/13097/article";
var expected = "http://www.domain.com/admin/edit.php?class=events&id=13097";
var pattern = "http://www.domain.com/(?<class>[^/]+)/(?<id>[^/]+)/article";
var r = new Regex(pattern);
var actual = r.Replace(source, "http://www.domain.com/admin/edit.php?class=${class}&id=${id}");
Assert.AreEqual(expected, actual);
相关文章:
- iFrame url更改时执行函数
- $http GET URL更改并查找错误的资源
- 用于自动将一种类型的URL更改为另一种类型
- 通过 JavaScript 捕获 URL 更改事件
- 如何在地址栏中的URL更改Firefox JPM时获得通知
- 在Twitch.tv上收听URL更改
- SEO友好的页面页面没有URL更改
- 对于多个视图,当URL更改时,我的子模板不会在Angular UI中加载
- 根据URL更改更改DOM元素类名
- 将 URL 更改为页面上单击的元素,而无需重新加载页面
- 当浏览器选项卡中的 url 更改时自动注销
- 提交请求时出现意外的 URL 更改
- 等待 Casper.js 中的 URL 更改
- 如何将URL更改为花式框内部URL
- 根据用于访问您的域的 URL 更改页面内容
- URL 更改事件 - JavaScript
- 在 url 更改时对 iframe 进行动画处理
- 如何在 Angular 中的 url 更改时仅重新加载一个控制器
- 选中并提交单选按钮上的 URL 更改
- 如何使用jquery(或javascript)检测没有哈希的url的url更改