用新链接替换站点上的大量旧链接?(客户端)
Replace lots of old links on a site with new links? (client side)
我们目前正在将文章从旧的CMS迁移到新的CMS。问题是旧文章中的链接是硬编码的,并且引用的是旧网站。
我们迁移者不能访问数据库,所以所有的文章和链接都必须手动更改。
我有旧的站点地图和新的站点地图,并想写一个Greasemonkey/jquery脚本点击一个按钮,脚本会改变所有旧的cms链接到新的cms链接。
你会建议记住什么,只允许客户端脚本?
目前我有这个小片段,用!标记所有旧链接。
$("#links").click(function()
{
$('a[href*="pattern-of-old-cms"]')
.append('<span class="attention" style="font-size: 25px; color:red;">!</span>');
});
$("a[href='http://www.google.com/']").attr('href', 'http://www.live.com/');
一个解决方案是对所有的链接都这样做
不要运行500+ .attr()
语句!使用更有效的方式处理页面
创建如下两个文件:
old_URLs.js:
var oldUrlArray = [
"Old address 1",
"Old address 2",
"Old address 3",
// etc., etc.
]
new_URLs.js:
var newUrlArray = [
"New address 1",
"New address 2",
"New address 3",
// etc., etc.
]
并将它们放置在与gm .user.js
文件相同的文件夹中。
然后你的脚本变成:
// ==UserScript==
// @name _Mass link replacer remapper
// @include http://YOUR_SERVER.COM/YOUR_PATH/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @require old_URLs.js
// @require new_URLs.js
// @grant GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
introduced in GM 1.0. It restores the sandbox.
*/
var oldLinks = $('a[href*="pattern-of-old-cms"]');
while (oldLinks.length) {
var firstHref = oldLinks[0].href;
var hrefIndex = oldUrlArray.indexOf (firstHref);
if (hrefIndex >= 0) {
var toReplace = oldLinks.filter ("[href='" + firstHref + "']");
toReplace.attr ("href", newUrlArray[hrefIndex]);
oldLinks = oldLinks.not (toReplace);
}
else {
alert ("I don't know how to map the link: " + firstHref);
break;
}
}
相关文章:
- 套接字服务器向客户端广播,但不从两者接收
- 无法从客户端发出套接字消息
- MVC客户端验证的某个位置缺少链接
- 套接字io客户端网络::ERR_CONNECTION_REFUSED
- 在通过套接字发送到客户端之前压缩中等大小的javascript数组是否值得
- 如何检测套接字何时在客户端上打开
- 在客户端/浏览器端存储照片(不是照片的链接)
- 如何生成一个唯一的链接,该链接将加载一个会话,其中包含客户端可用的某些文档
- 在服务器上使用 ExpressJS,在客户端静态链接上使用 JQuery
- 如何在网格视图中链接按钮的客户端单击事件上显示动态消息
- 在链接单击时执行客户端脚本
- 如何在不打开浏览器中的新窗口/选项卡的情况下打开“tel:+48123”链接客户端
- 如何打开一个MS Word文档在客户端通过点击链接在我的asp.net页面,并提供数据给它
- 检测基于web的邮件客户端与本地邮件客户端的mailto链接
- 如何使用javascript的客户端对象模型检索sharepoint列表中的超链接数据类型列值
- 用新链接替换站点上的大量旧链接?(客户端)
- 逃跑&用于在邮件客户端中显示(mailto链接)
- 是否可以使用JavaScript获取客户端上给定链接的重定向链中的所有URL
- 单击链接打开电子邮件桌面客户端
- 使用Javascript客户端计算文本区超链接的最佳方法