Как создать букмарклет с несколькими функциями - PullRequest
0 голосов
/ 05 сентября 2018

Я новичок в создании букмарклетов JavaScript, но у меня есть определенный способ решения моих проблем, но я застрял на одном последнем кусочке.

По сути, я хочу создать букмарклет, который заменит текст в двух местах URL-адреса - субдомен и URI.

Мне удалось сделать это для первой части:

(function() {
  window.location = window.location
  .toString()
  .replace(/^https:\/\/www\./, "https://edit.");
})();

Далее мне нужно получить некоторые метаданные (cab-id) со страницы. Мне удалось распечатать его на консоли:

function getCabID() {
var metas = document.getElementsByTagName("meta");

for (var i = 0; i < metas.length; i++) {
if (metas[i].getAttribute("name") == "cab-id") {
  return metas[i].getAttribute("content");
  }
}

return "";
}

console.log(getCabID());

Следующее, что мне нужно сделать, это заменить конец URL-адреса (все из «www.xxxxxx.org.uk/*» следующим:

/EPiServer/CMS/Home#context=epi.cms.contentdata:///

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

(function() {
  var url=window.location.href;
  stringUrl=String(url);
  stringUrl=stringUrl.replace(/^https:\/\/www.xxxxxx.org.uk\/, "https://edit.xxxxxx.org.uk/EPiServer/CMS/Home#context=epi.cms.contentdata:///");
  document.location=stringUrl;
})();

Мне также нужно будет добавить идентификатор кабины в конце всего этого сразу после ///.

Извините за длинный вопрос, но мне нужно сделать следующее:

  1. Заставьте третий реально работать!
  2. Объедините 3 функции

Любые советы будут высоко оценены: D

1 Ответ

0 голосов
/ 08 сентября 2018

Как я понял ваш вопрос, следующий букмарклет, вероятно, позволяет объединить 2-й и 3-й этапы:

javascript:(function() {
    window.location.href = "https://edit.xxxxxx.org.uk/EPiServer/CMS/Home#context=epi.cms.contentdata:///" + getCabID();

    function getCabID() {
        var metas = document.getElementsByTagName("meta");

        for (var i = 0; i < metas.length; i++) {
        if (metas[i].getAttribute("name") == "cab-id") {
          return metas[i].getAttribute("content");
          }
        }

        return "";
    }
})();
...