首页 > 解决方案 > 使用 getAttribute() 遇到问题

问题描述

我需要找到包含我选择的文本的元素的 id,但我一直未能找到一种方法来做到这一点。看起来问题在于您不能在窗口对象上使用 getAttribute 方法。我正在使用与事件页面通信的内容脚本来执行它。这是我的内容脚本:

let element = window.getSelection().anchorNode;
let finder = element.getAttribute('id');
alert(finder.toString()); //test

这是我的活动页面:

chrome.contextMenus.create({ id: "M", title: "Feature One", contexts: ["selection"] }); 

chrome.contextMenus.create({ id: "ATCB", title: "Feature Two", contexts: ["selection"] }); 

chrome.contextMenus.onClicked.addListener(function(clickData){

  if (clickData.menuItemId == "M" && clickData.selectionText){
    //var one = clickData.selectionText;
    chrome.tabs.executeScript({
      file: 'contentScript.js'
    });
  }
  if (clickData.menuItemId == "ATCB" && clickData.selectionText){
    var two = clickData.selectionText; 
    alert(two + " two"); //test 
  }

});

这是我的清单文件:

{
    "manifest_version": 2,
  
    "name": "Menu",
    "version": "1.0",
    "icons": {
      "128": "icon.png",
      "48": "icon.png",
      "16": "icon.png"
    },
  
    "browser_action": {
      "default_icon": "icon.png"
    },
  
    "background": {
      "scripts": ["eventPage.js"],
      "persistent": false
    },
  
    "content_scripts": [{
      "matches": ["<all_urls>"],
      "js": ["contentScript.js"] 
    }],
  
    "permissions": [
      "contextMenus",
      "tabs",
      "activeTab",
      "file://*/*",
      "https://*/*",
      "http://*/*"
    ]
  
}

感谢您阅读我的问题

标签: javascriptgoogle-chrome-extensioncontextmenu

解决方案


这可以通过 document.activeElement.id 来完成; https://www.w3schools.com/jsref/prop_document_activeelement.asp


推荐阅读