访问pwa地址的url参数

Posted

技术标签:

【中文标题】访问pwa地址的url参数【英文标题】:Access url parameters of pwa address 【发布时间】:2017-07-25 22:49:15 【问题描述】:

我是 ionic 2 的新手。在到处搜索后,鉴于以下情况,我找不到直接答案:

    我正在使用 ionic 2 构建 PWA(因为我稍后会开发此应用的混合版本) 用户将找到并访问我的应用程序的地址将是一个标准域,例如https://welcometotheapp.com?viewid=0101018737abcdefg 我正在使用 ionic 2,最近安装在 windows 10 上 我已经开始了一个新的空白应用项目 我的问题与导航无关。

我的问题是如何访问 url 参数viewid?我需要这个参数,以便应用程序将其发送到我的服务器端 REST api 并获取正确的 json 数据。我的用户通过 SMS 收到带有参数的 URL 作为链接。 我尝试过使用this question 等几个建议

但我正在旋转我的***。我还观看了 Josh Morony 和其他人的大量 youtube 视频,但没有直接相关。

有人可以帮忙解答这个问题吗?作为一个新手,如果代码片段在给定 ionic2 空白模板结构的情况下使用什么文件中的代码进行注释,那将非常有帮助。谢谢大家!

【问题讨论】:

【参考方案1】:

您可以尝试普通的旧 javascript。我不认为这是特定于离子的。而且因为它主要不是基于导航,所以NavParams 不起作用,我猜。

.js 中,您可以像这样使用split

let myParam = location.search.split('viewid=')[1];

请注意,如果没有viewId=,那么该变量将是未定义的。这是location.search的文档

【讨论】:

谢谢,我之前已经成功地使用过javascript来做这种事情。就结构而言,如果我创建了一个 .js 文件,比如“readurl.js”,我会将它放在应用程序文件树的什么位置,我将如何引用/调用它?从 url 读取参数是应用程序加载后需要做的第一件事。 json 数据将显示在 home.html 上。 我建议将它添加到构造函数中的app.component.ts。或者取决于您将如何操作构造函数中的home.tsionViewDidLoad() 函数中的数据 感谢您的帮助。就我而言,我最终在 ionViewDidLoad() 函数中将它添加到我的 home.ts 中,因为我只想在初始加载时检索参数。我从文档中了解到,如果放在构造函数中,它会在每次页面加载时运行。就我而言,这是不可取的。再次,非常感谢! @gerdi 如果 url 的格式是 welcometotheapp.com/astringgoeshere/?key1=value&key2=value2 并且我想在 .com/ 之后读取 url。它会起作用吗?还是其他方式?【参考方案2】:

我必须使用来自@angular/commonLocation。所以我相信值得发布另一个答案:

import  Location  from '@angular/common';

...

public urlParams: any;

constructor(..., public location: Location) 
    this.initializeURLParams();
    console.log(this.urlParams);


initializeURLParams() 
  const path = this.location.path(true),
    hasParams = /\?(.+?\=.+)1/;
  let params;

  if (hasParams.test(path)) 
    params = ;
    path.split('?')[1].split('&').forEach(both => 
      let e = both.split('=');
      params[e[0]] = e[1];
    );
  

  this.urlParams = params;

【讨论】:

这对我不起作用,在浏览器中。 This.location.path (true) 返回 "" 。但是我只用 ionic:serve 对其进行了测试,不确定生产中会发生什么。但有效的是:location._platformStrategy._platformLocation.location.search; 更新,上面是路径没有#hash的时候。当它确实 location.path 工作正常

以上是关于访问pwa地址的url参数的主要内容,如果未能解决你的问题,请参考以下文章

vue访问外部url会被取消

如何防止通过url地址栏直接访问后台

href=url?page=1 问号后面的参数能不能不在地址栏显示

springboot的controller使用及url参数的获取

thinkphp 取得url参数

逐个访问URL的每个查询字符串参数