使用页面链接的url参数

时间:2016-01-16 22:30:42

标签: javascript html variables web

我要问的问题可能听起来很愚蠢,但我一直试图弄清楚几天。我想生成一个指向网站的链接:

example.github.io/Example/Example

最后有变量或其他东西

example.github.io/Example/ExampleVariable

然后在页面加载时读取该变量。在一个完美的世界里,它看起来像这样:

http://Example.github.io/Example/Example<script>function(){}</script>

我还需要确保用户实际访问或至少最终结束的页面是原始链接:即 example.github.io/Example/Example
任何帮助将不胜感激。

如果有人想知道的话。
是的,如果适用,它就在github上。我几乎不懂PHP,所以这不是最好的。这是我做过的ToDo列表管理器应用程序。有一个加载功能,因此用户可以共享列表。加载字符串(我正在尝试阅读的变量)如下所示:
/LoadNAME#THEME#Item A,Item B,ect.

2 个答案:

答案 0 :(得分:1)

如果您正在使用github页面,则可以使用URL parameters。在这种情况下,网址看起来像这样:http://mypage.github.io/test/?myparam=value

然后你可以使用javascript查询并根据url包含的url参数执行某些操作。

答案 1 :(得分:1)

或者,您可以在使用斜杠

之后使用此哈希#旧技巧
example.github.io/Example/#/var1/var2/var3

然后使用window.location.hrefsplit()次使用将为您提供 带有一系列参数。

/* URL in address bar: 
   http://localhost/test/js-url-parameters/#/str1/str2/str3/
*/

var docURL = window.location.href,
  params = [];

// filter out the website origin "example.github.io" in the OP example      
docURL = docURL.replace(window.location.origin, '');

// if /#/ found then we have URL parameters
// grabbing the parameters part of the URL
if (docURL.indexOf('/#/') > -1) {
  docURL = docURL.split('/#/')[1];
  if (docURL != '') {

    // omit the last forward slash if exist
    if (docURL[docURL.length - 1] == '/') {
      docURL = docURL.substring(0, docURL.length - 1);
    }

    // split the URL final string o get an object with all params 
    params = docURL.split('/');
    console.log(params);
  }
} else {
  console.log('No URL parameters found');
}

/* Output: 
   ["str1", "str2", "str3"]
*/

enter image description here

<强>更新

以上输出所有变量为string,因此要根据您的情况检索parseInt - parseFloat()所需的数值。

例如,如果是这个网址:

http://localhost/test/js-url-parameters/#/str1/22/str3/

上面的代码会输出 ["str1", "22", "str3"] ,而我们假设22为整数,为了解决此问题,请添加以下内容:

// for each elements in params, if it is Not a Number (NaN) we return 
// it as it is, else it's a nubmer so we parseInt it then return it
for(var i in params){
    params[i] = isNaN(parseInt(params[i])) ? params[i] : parseInt(params[i]);
}

上述代码段在params = docURL.split('/');行之后获得权利。

现在网址:

http://localhost/test/js-url-parameters/#/str1/22/str3/输出 ["str1", 22, "str3"] ,如您所见22是一个数字而不是字符串。

enter image description here