5

https://pay.reddit.com/.compactで始まるURLに自動的に追加されるGreasemonkey/usernameを作成したいので、モバイルバージョンに自動的にリダイレクトされます。

私は似たようなユーザースクリプト、特にこれを見てきました:https ://userscripts.org/scripts/review/112568置換パターンを編集する方法を見つけようとしていますが、このドメインのスキルが不足しています。

https://pay.reddit.com/*からにリダイレクトするGreasemonkeyスクリプトを作成するにはどうすればよいhttps://pay.reddit.com/*.compactですか?

ありがとう

4

2 に答える 2

10

スクリプトは次のことを行う必要があります。

  1. 現在のURLがすでにコンパクトサイトにあるかどうかを検出します。
  2. 必要に応じて、ページのコンパクトバージョンをロードします。
  3. 「アンカー」URL(「フラグメント」または「ハッシュ」(#...で終わる)に注意し、それらを説明します。
  4. 戻るボタンが適切に機能するように、不要なページをブラウザの履歴に含めないでください。URLのみ.compactが記憶されます。
  5. で実行することによりdocument-start、この場合、スクリプトのパフォーマンスを向上させることができます。

そのために、このスクリプトは機能します。

// ==UserScript==
// @name        _Reddit, ensure compact site is used
// @match       *://*.reddit.com/*
// @run-at      document-start
// @grant       none
// ==/UserScript==

var oldUrlPath  = window.location.pathname;

/*--- Test that ".compact" is at end of URL, excepting any "hashes"
    or searches.
*/
if ( ! /\.compact$/.test (oldUrlPath) ) {

    var newURL  = window.location.protocol + "//"
                + window.location.host
                + oldUrlPath + ".compact"
                + window.location.search
                + window.location.hash
                ;
    /*-- replace() puts the good page in the history instead of the
        bad page.
    */
    window.location.replace (newURL);
}
于 2012-05-20T23:16:13.350 に答える
0

示したサンプルスクリプトは、正規表現を使用してウィンドウの場所を操作しています。

replace(/^https?:\/\/(www\.)?twitter.com/, 'https://mobile.twitter.com');

https://www.twitter.com当然のことながら、これはなどhttp://twitter.comをに置き換えhttps://mobile.twitter.comます。

正規表現と一致する場合はURLに文字列を追加するため、状況は少し異なります。試す:

var url = window.location.href;
var redditPattern = /^https:\/\/pay.reddit.com\/.*/;
// Edit: To prevent multiple redirects:
var compactPattern = /\.compact/;
if (redditPattern.test(url)
    && !compactPattern.test(url)) {
    window.location.href = url + '.compact';
}

テストケースについては、 http: //jsfiddle.net/RichardTowers/4Vjd​​Z /3を参照してください。

于 2012-05-20T16:30:42.427 に答える