2013-02-07 34 views
1

我是Greasemonkey腳本編寫新手,想要使用當前URL來本地化頁面或腳本中的鏈接。根據頁面子域本地化腳本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,只是保持連接,SW,IT,FR或其他本地化前綴。

我試圖修改此腳本:https://userscripts.org/scripts/show/157358

+0

是'swfobject.embedSWF'中的Greasemonkey腳本,或者是它在目標頁面的JavaScript?如果您要修改現有腳本,請鏈接或粘貼該腳本。 –

+0

我試圖修改這個腳本:https://userscripts.org/scripts/show/157358 –

回答

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); 
+0

'var subdomain = baseHost.replace(/^(.+?)\d?\.server\.com$/我,「$ 1」);' 部分工作,我總是有en1作爲子域:/ –

+0

您沒有編輯該行以匹配您的服務器,對不對?所以它應該像'var subdomain = baseHost.replace(/^(.+?)\d?\.forgeofempires\.com$/i,「$ 1」);' - 這適用於我。 –

+0

查看已更新的答案。 –