如何在URL中添加参数,然后使用Greasemonkey重新加载页面?

时间:2013-03-06 20:08:20

标签: javascript dom greasemonkey

如果您没有登录,Quora网站会将其大部分内容模糊不清。另一种方法是将参数“?share = 1”添加到其网址中。我认为通过Greasemonkey执行此操作的步骤是:

0 /存储当前网址

1 /检查参数是否已经存在。如果是,请休息。

2 /如果没有,请添加参数。

3 /使用更新的网址重新加载。

它类似于this question,但在我看来,这可以在没有正则表达式的情况下完成吗?我错了。

这是我正在尝试使用的代码:

// ==UserScript==
// @name       Quora Share
// @namespace  kevmo.info
// @version    0.1
// @description  adds "?share=1" to URLS, i.e. let's you view full Quora content w/o being logged in.
// @include      https://*.quora.com/*
// @include      http://*quora.com/*
// @copyright  Creative Commons
// ==/UserScript==

var url = window.location.href;

if (url.indexOf("?share=1") !== -1){
    break;
}
else{
    url +="?share=1";
    window.location.replace(url)
}

注意:在“settings”中,我将脚本设置为在document-start上运行。

我知道这种基本方法不适用于其他网站,只是附加“?share = 1”应该在Quora上工作(参见:http://blog.quora.com/Making-Sharing-Better

当我访问http://www.quora.com/Animals/What-are-some-mind-blowing-facts-from-the-animal-kingdom时,页面不会使用添加的参数重新加载所需的新网址。

1 个答案:

答案 0 :(得分:2)

元编辑:您正在使用" break;"而不是在循环结构中。

    function share_redirect() {
    var new_url = false;

    if (window.location.hash.length === 0  && window.location.search.lenth === 0) {
         new_url = window.location.href+"?share=1"
    } else {

         if (window.location.search.indexOf('share=1') != -1) {
             return false; // already sharing
         }

         if (window.location.search.length && window.location.hash.length) {

             new_url = window.location.href.split('#')[0]+"&share=1"+window.location.hash;
         } else if (window.location.search.length === 0 && window.location.hash.length) {
             new_url = window.location.href.split('#')[0]+"?share=1"+window.location.hash;
         } else {
             new_url = window.location.href+"&share=1";
         }
    }
    if (new_url) {
        window.location = new_url;
    }
}