1

私はGreasemonkeyスクリプトを初めて使用し、現在のURLを使用してページまたはスクリプト内のリンクをローカライズしたいと考えています。

たとえば、のようなリンクを使用してhttp://en1.server.com/、パーツをキャプチャしen1ます。

現在、スクリプトは以下を使用しています。

// @include     /^http://en[0-9].forgeofempires.com/game/index.*$/

(Greasemonkeyの正規表現@include構文)

そして、以下のスクリプトには次のようなものがあります。

swfobject.embedSWF("http://cdn.en.forgeofempires.com/swf/Preloader.swf?1358930484", "content", "100%", "100%", swfVersionStr, xiSwfUrlStr, flashvars, params, attributes);


ただし、ハンガリー語、フランス語、またはスウェーデン語のサーバーでこのゲームをプレイする場合は、Linuxでゲームを正しく実行できるように、スクリプトを手動で変更する必要があります。

スクリプトを次のようなものに変更したいと思います。

// @include     /^http://*[0-9]\.server\.com/game/index.*$/
var url = window.location.href;
var loc = "remove everything but url prefixe"
swfobject.embedSWF("http://cdn.(+loc+).forgeofempires.com/swf/Preloader.swf?1358930484", "content", "100%", "100%", swfVersionStr, xiSwfUrlStr, flashvars, params, attributes);

しかし、URLをクリーンアップして、en、sw、it、fr、またはその他のローカライズされたプレフィックスを保持する方法がわかりません。

このスクリプトを変更しようとしています:  https ://userscripts.org/scripts/show/157358

4

1 に答える 1

0

更新された質問の更新:

重要なのは、ホスト名だけを取得しlocation.hostname、正規表現を使用しreplaceてサブドメインを抽出し、末尾の数字を削除することです。

そのため、スクリプトは次のようになります。

// ==UserScript==
// @name        Forge of Empires - Enable FoE to run with Adobe Flash 11.2
// @namespace   http://userscripts.org
// @description Forge of Empires, after the update on Jan 23rd 2013., requires that Adobe Flash Player V11.3 is installed on the system. This presents the problem mostly for Linux users, becouse only version 11.2 is available on Linux. This scripts enables game to run on Adobe Flash Player V11.2.
// @include     /^http://.+?\.forgeofempires\.com/game/index.*$/
// @grant       none
// @version     2
// ==/UserScript==

var swfVersionStr   = "11.2";
var baseHost        = location.hostname;
var subdomain       = baseHost.replace (/^(.+?)\d?\.forgeofempires\.com$/i, "$1");

swfobject.embedSWF (
    "http://cdn." + subdomain + ".forgeofempires.com/swf/Preloader.swf?1358930484", 
    "content", 
    "100%", "100%", 
    swfVersionStr, 
    xiSwfUrlStr, 
    flashvars, 
    params, 
    attributes
);
swfobject.addDomLoadEvent (createFullBrowserFlash);
于 2013-02-07T05:05:54.610 に答える