2017-02-16 61 views
-1

一个小问题,而试图建立一个Chrome扩展。目标很简单,我知道现在有关于此事的帖子,但无论我发现什么都不适合我。感觉像在普通脚本(html/js)中工作的内容在chrome扩展中不起作用。JS - Chrome扩展 - 交通选择

我试图做一个简单的扩展,它在点击相应的图标将获得选择(至少文本,如果可能的话更多信息),但不知它不工作。我得到一个选择项目,但它是一个空的选择。

这是代码。 manifest.json的

{ 
    "manifest_version": 2, 

    "name": "Paster", 
    "description": "Bla", 
    "version": "1.0", 

    "browser_action": { 
    "default_icon": "camera.png", 
    "default_title": "Bla" 
    }, 

    "background": { 
    "page": "background.html" 
    }, 

    "permissions": [ 
    "tabs", 
    "activeTab", 
    "https://ajax.googleapis.com/", 
    "clipboardRead", 
    "clipboardWrite" 
    ] 
} 

background.html

<textarea id="temp_textarea_draft_paster"></textarea> 
<div>BLA BLA BLA</div> 
<script src="jquery-3.1.1.min.js"></script> 
<script src="background.js"></script> 

background.js

chrome.browserAction.onClicked.addListener(function() { 
    getSelectionText() 
}); 

getSelectionText = function (info, tab) { 
    selection = window.getSelection(); 
    console.log(selection); 
    alert('yeah' + selection); 
}; 

如果我从background.html打开开发者控制台中我得到的console.log但与空的选择,无论我选择了什么。警报也弹出,但只是'是的'。

如果我去了镀铬的扩展://ext-id/background.html页,选择一个文本,然后按一下按钮,它有一个选择,包括它的数据...如何来工作的?感觉就像扩展程序没有从选项卡中获得选择,只是从background.html页面中选择。

+1

请参阅这个http://stackoverflow.com/questions/12424631/get-selected-text-in-a-chrome-extension它使用'chrome contextMenu API执行' – nivas

+1

阅读文档。 https://developer.chrome.com/extensions/overview#arch –

+0

我建议你阅读[Chrome扩展概述](https://developer.chrome.com/extensions/overview)(也许还有页面从概述链接)。[体系结构部分](https://developer.ch rome.com/extensions/overview#arch)有全面的架构信息,这些信息应该有助于你理解事物的组织/完成方式。您可能还需要阅读[内容脚本](https://developer.chrome.com/extensions/content_scripts)和[消息传递](https://developer.chrome.com/extensions/messaging)。 – Makyen

回答

1

后我发现了相当多的研究解决方案。是的,阅读文档(再次)建议帮助,但我仍然认为这不是太清楚解释。但是,如果有人得到了相同的问题,它可以理解,background.js只链接到background.html而不是网页的内容被证实有效标签。

相反,内容脚本在活动页面内被“添加”或“应用”,因此可以使用诸如window.getSelection()之类的函数。

操作步骤如下:

的manifest.json指的是你要在活动页面内,以及在相关的“匹配”,被“插入” content_scripts。 (它会影响到哪个页面,例如“”)

当触发浏览器动作(点击图标)并且内容脚本将听取此消息时,您的背景页面可以向内容脚本发送消息(https://developer.chrome.com/extensions/messaging)并回复getSelection结果