如何创建具有多个功能的书签

问题描述 投票:0回答:1

我是创建JavaScript bookmarklet的新手,但在解决我的问题方面已经有了一定的方法,但最后还是陷入了困境。

基本上,我想创建一个bookmarklet,它将替换URL中2个位置的文本 - 子域和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;
})();

我还需要在///之后直接弹出cab-id。

很抱歉这个问题很长,但我需要做的是:

  1. 让第3个实际工作!
  2. 结合3个功能

任何提示都将受到大力赞赏:D

javascript bookmarklet
1个回答
0
投票

正如我理解你的问题,以下书签可能允许结合第二和第三步:

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 "";
    }
})();
© www.soinside.com 2019 - 2024. All rights reserved.