我有一个站点在几个环境中运行在不同的URL上(如dev.mysite.com、qa.mysite.com、uat.mysite.com等)。
在每个环境中都有一个Greasemonkey脚本(myGM.user.js),但是它的版本可能是不同的,根据环境的不同,需要调用不同的web服务来获取一些数据。
在我的用户脚本中,我希望获得最初安装该用户脚本的URL,这样我就可以提取主机并使用它作为我的web服务URL的前缀。
例如,如果我的脚本是从
http://dev.mysite.com/myGM.user.js,
我想要
http://dev.mysite.com/myGM.user.js,
提取
http://dev.mysite.com/
从它和电话
http://dev.mysite.com/myWebService/getData
获取数据。
实现这一目标的最简单方法是什么?谢谢!
发布于 2012-09-27 21:01:44
最后,我向与myGM.user.js相同的文件夹中添加了一个ASPX页面(可能是PHP或其他什么)。它只是确定当前主机(服务器端)并输出为文本。
所以如果你浏览
http://dev.mysite.com/getHost.aspx
我们的反应是
http://dev.mysite.com/
如果你浏览
http://uat.mysite.com/getHost.aspx
反应将是
http://uat.mysite.com/
然后,在我的myGM.user.js中我添加了
// @resource rootUrl GetSiteRoot.aspx
此资源指令获取一个相对于安装用户脚本的URL的URL,并与用户脚本一起下载响应。
这让我可以打电话
GM_getResourceText('rootUrl')
在用户脚本的主体中,并且确切地知道我的脚本是从w/o安装到哪里的,因此必须从环境到环境进行任何更改。
但是,我将提交一个特性请求,以便添加GM_Info API。
发布于 2012-09-27 04:11:05
尽管Greasemonkey插件记录了脚本的原始安装URL,但是这个信息对Greasemonkey脚本来说是不可用的。
它看起来像是应该由信息提供的东西,但是它不是,你可以尝试打开一个功能请求。
目前,解决的唯一方法是在每个地方都有稍微不同的脚本版本。(诚然,你已经这么做了。)具体来说,在脚本的元数据块中添加和更改一行。
您可以使用指令,如下所示:
// ==UserScript==
// @name YOUR SCRIPT
// @include http://YOUR_SERVER.COM/YOUR_PATH/*
// @downloadURL http://qa.mysite.com/myGM.user.js
// ==/UserScript==或者创建您自己的指令,如下所示:
// ==UserScript==
// @name YOUR SCRIPT
// @include http://YOUR_SERVER.COM/YOUR_PATH/*
// @myInstallLocale http://dev.mysite.com/myGM.user.js
// ==/UserScript==脚本的位置将如下所示:
var dwnloadURL = "";
var dwnldURLMtch = GM_info.scriptMetaStr.match (/\n\s*\/\/\s+@downloadURL\s+(.+?)\s*\n/i);
if (dwnldURLMtch && dwnldURLMtch.length) {
dwnloadURL = dwnldURLMtch[1];
}
console.log (dwnloadURL);https://stackoverflow.com/questions/12613421
复制相似问题