如何在新选项卡中打开新网页后获取书签中的 JavaScript 代码以执行

How do I get JavaScript code in a bookmarklet to execute after I open a new webpage in a new tab?

本文关键字:书签 获取 JavaScript 执行 代码 网页 新选项 选项 新网页      更新时间:2023-09-26

我正在尝试弄清楚如何让我的书签按照我想要的方式工作。这是我的问题。我有一个JS书签,可以抓取一个安全的网页并使用这些DOM元素来运行我的代码。

我的

问题是,当我单击我的书签时,它会在新选项卡中打开新页面,并立即开始运行我打算为新打开的页面运行的代码。例如,当我单击书签时,我用于存储用户输入的提示窗口会立即在当前页面上运行。我的预期行为是首先在新选项卡中打开新页面,加载页面,然后使用该新页面的 DOM 元素运行提示和其余代码。我正在使用一个安全的网页,所以我将使用谷歌主页作为示例。

下面是一个示例:

javascript: (function() {
function OpenInNewTab(url){
  var win = window.open(url);
  win.focus();
}
OpenInNewTab("https://www.google.com/?gws_rd=ssl");
var prmt = prompt("Enter a date:");
window.onload = prmt;
})();

最终,我希望代码做 3 件事。

  1. 从任何页面单击新窗口时,在新选项卡中打开新窗口
  2. 进入新选项卡并加载页面
  3. 然后在新打开的页面上运行我的代码

我希望我已经很好地解释了自己!与往常一样,非常感谢任何信息。

您需要参考正确的窗口。最简单的方法是在要单击的每个单独页面上使用相同的id,然后通过 <script> 标记的 src 属性包含以下脚本。

function openInNewTab(clickElement, url){
  clickElement.onclick = function(){
    var win = open(url);
    win.focus();
    var prm = win.prompt('Enter a Date: ', 'March 11, 2015');
    if(prm){
      console.log('The Date You Entered was: '+prm);
    }
    return win;
  }
}
var pre = onload; // previous onload
onload = function(){ // window is implicit
  if(pre)pre();
  var newWin = openInNewTab(document.getElementById('click_input_id'), 'https://www.google.com')
}