所以我正在使用' *'选择器,因为ID和密钥显示在'脚本中,但要替换的网址显示在' a'中。我的Javascript知识相当有限(虽然我可以google),但我的正则表达式确实有更广泛的历史。
在任何情况下,当我在适用的页面上运行时,页面的某些部分都没有完成加载,所以我想知道我做错了什么。我觉得这里有不止一件事可以改进,但我不知道在哪里可以看出来。
为了它的价值,脚本 我打算做什么,除了弄乱页面的其他部分。
$('*').html(function (i, text) {
var idRegex = /"id":(\d{6,})/i;
var keyRegex = /"access_key":"(key[-\w\d]*)"/i;
var id = idRegex.exec(text);
var key = keyRegex.exec(text);
if (id !== null && key !== null && id !== undefined && key !== undefined)
var new_link = "http://www.replacement-page.com/test?document_id=" + id[1] + "&access_key=" + key[1];
if (new_link !== undefined)
return text.replace(/https?:\/\/www\.example-page\.com\/replaced-url/gi, new_link);
});
编辑:将以下两项内容添加到代码 [似乎] 使其正常工作
// @grant GM_log
// ==/UserScript==
/*- The @grant directive is needed to work around a design change introduced in GM 1.0,
It restores the sandbox.
*/
var my_jquery = jQuery;
jQuery.noConflict(true);
var $ = my_jquery, jQuery = my_jquery;
编辑2:实际上,添加破坏了脚本。然而,这确实帮助我通过使用传递的全局变量使其成为两个函数来提出解决方法。更具体地说,他们没有按照页面上的其他脚本行事。最终的脚本如下:
// ==UserScript==
// @name Scribd Print and Download
// @description Changes "Upload" link to open a printable viewer (print to PDF)
// @author Inserio
// @include http://*.scribd.com/doc/*
// @include https://*.scribd.com/doc/*
// @version 1.6
// @require https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js
// ==/UserScript==
var new_link;
$('script').html(function (i, text) {
var idRegex = /"id":(\d{6,})/i;
var keyRegex = /"access_key":"(key[-\w\d]*)"/i;
var id = idRegex.exec(text);
var key = keyRegex.exec(text);
if (id !== null && key !== null && id !== undefined && key !== undefined)
new_link = "http://d1.scribdassets.com/ScribdViewer.swf?document_id=" + id[1] + "&access_key=" + key[1];
// if (new_link !== undefined)
// return text.replace(/https?:\/\/www\.scribd\.com\/upload-document/gi, new_link);
// Matches the "Upload" link on the page.
// Click it to open the new page in a viewer that will allow printing to PDF
});
$('div').html(function (i, text) {
if (new_link !== undefined)
return text.replace(/https?:\/\/www\.scribd\.com\/upload-document/gi, new_link);
});