Невозможно получить параметры URL с JavaScript на мобильном телефоне - PullRequest
0 голосов
/ 27 марта 2020

Я пишу программу, которая в основном выводит все пользовательские кнопки на экран, кроме кнопок собственного пользователя. Я нашел некоторый код для получения параметров URL, который выглядит следующим образом:

function getParameterByName(name, url) {
  if (!url) url = window.location.href;
  name = name.replace(/[\[\]]/g, "\\$&");
  var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
    results = regex.exec(url);
  if (!results) return null;
  if (!results[2]) return "";
  return decodeURIComponent(results[2].replace(/\+/g, " "));
}

Теперь моя программа написана для добавления кнопок на все экраны игроков, и это прекрасно работает. Но по какой-то причине мой код параметров не может получить параметры на моем iphone или ipad, а на моем компьютере. Мои параметры выглядят так: ?username=User1 Когда я запускаю его на моем компьютере с getParameterByName('username'), он возвращает User1. Но на мобильном телефоне. Он просто возвращает null. какие-нибудь советы?

1 Ответ

0 голосов
/ 27 марта 2020

Это функция JavaScript, которую я использую для получения параметров URL. Он вернет ассоциативный массив значений ... вы также можете запросить определенное значение c.

// demo function
console.clear();
document.querySelector(".btn").addEventListener("click", function () {
  console.log('username:', getUrlParams("username"));
  console.log('all-params', getUrlParams());
});

// URL parameter function
getUrlParams = function (key) {
  var a = [],
    b = window.location.href
      .slice(window.location.href.indexOf("?") + 1)
      .split("&");
  b.every(function (c) {
    var p = c.split("="),
      d = {};
    if (p.length === 2) {
      d[p[0]] = p[1];
      if (key && key === p[0]) {
        a = p[1];
        return false;
      }
      a.push(d);
    }
  });
  return a.length > 0 ? (key && a[0] === key ? a[1] : a) : undefined;
};
<button class="btn">Click me</button>

[РЕДАКТИРОВАТЬ] В этом примере кода возвращается «undefined» для обоих вызовов, поскольку в URL нет параметров URL. Вместо этого попробуйте этот CodePen (посмотрите на веб-консоль): https://codepen.io/cjboco/pen/MWwZbKO?editors=1010

[EDIT # 2] Вот ожидаемые результаты для вашего примера:

Call: getURLParams("username")
Result: "User1"

Call: getURLParams()
Result: [{"username","User1"}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...