是否有一种简单的方法让本地网页显示URL中传递的变量?

时间:2016-08-05 02:11:02

标签: html url firefox parameters local

我正在尝试使用Firefox扩展程序,该扩展程序会在满足某些条件时加载任意URL(仅通过HTTP或HTTPS)。

在某些情况下,我只想显示一条消息,而不是从互联网上请求网址。

我正在考虑简单地托管一个显示该消息的本地网页。问题在于消息需要包含变量。

是否有一种简单的方法来制作本地网页,以便它可以显示在网址中传递给它的变量?我宁愿只使用HTML和CSS,但如果绝对需要,可以添加一些内联javascript。

作为一个简单的例子,当扩展名调用类似:

expand

我想看看:

  

消息:要显示的文本

显示在浏览器的视口中。

2 个答案:

答案 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;
  }