我正在尝试使用Firefox扩展程序,该扩展程序会在满足某些条件时加载任意URL(仅通过HTTP或HTTPS)。
在某些情况下,我只想显示一条消息,而不是从互联网上请求网址。
我正在考虑简单地托管一个显示该消息的本地网页。问题在于消息需要包含变量。
是否有一种简单的方法来制作本地网页,以便它可以显示在网址中传递给它的变量?我宁愿只使用HTML和CSS,但如果绝对需要,可以添加一些内联javascript。
作为一个简单的例子,当扩展名调用类似:
时 expand
我想看看:
消息:要显示的文本
显示在浏览器的视口中。
答案 0 :(得分:1)
您可以使用Location对象的“search”属性从URL末尾提取变量:
var a = window.location.search;
在您的示例中,a等于“?t = Text%20to%20display”。
接下来,您需要从字符串的开头删除前导问号。 if语句是为了防止浏览器在搜索属性中不包含它:
var s = a.substr(0, 1);
if(s == "?"){s = substr(1);}
如果您获得包含多个变量的URL,您可能希望将查询字符串拆分为&符号以生成名称 - 值对字符串数组:
var R = s.split("&");
接下来,将名称 - 值对字符串拆分为等号,以将名称与值分开。将名称存储为数组的键,将值存储为与键对应的数组值:
var L = R.length;
var NVP = new Array();
var temp = new Array();
for(var i = 0; i < L; i++){
temp = R[i].split("=");
NVP[temp[0]] = temp[1];
}
几乎完成了。获取名称为“t”的值:
var t = NVP['t'];
最后,将变量文本插入到文档中。一个简单的例子(需要调整以匹配您的文档结构)是:
var containingDiv = document.getElementById("divToShowMessage");
var tn = document.createTextNode(t);
containingDiv.appendChild(tn);
答案 1 :(得分:1)
getArg('t');
function getArg(param) {
var vars = {};
window.location.href.replace( location.hash, '' ).replace(
/[?&]+([^=&]+)=?([^&]*)?/gi, // regexp
function( m, key, value ) { // callback
vars[key] = value !== undefined ? value : '';
}
);
if ( param ) {
return vars[param] ? vars[param] : null;
}
return vars;
}