2012-11-13 77 views
3

我想知道,如果我有一个Chrome扩展,当你点击图标时弹出了一个弹出窗口,并且该弹出窗口有一个文本框可以输入数据,javascript看起来会是什么样子文本框内的文本?从Chrome扩展弹出窗口获得价值

更新:我知道如何从文本框中获取值,但我的问题是,如何特别访问我的popup.html文件的元素?我尝试访问document.getElementById等,但它获取实际页面内容中的元素,而不是我自定义的弹出窗口。

+0

听起来像一个哲学问题... :) – gdoron

+0

哈哈也许是这样。谁知道。我只是想知道,在我的popout.js文件中,如果该文本框的ID为“input”,代码将访问弹出窗口中的元素。 – barndog

+0

如果您正在寻找提示用户直接输入的最简单方法,您是否考虑过'提示符'? –

回答

5

我们可以通过绑定的事件侦听器如以下方式点击按钮事件的一些事件得到弹出页面的文本框中的值:

假设manifest.json文件中是这样的:

{ 
    "manifest_version": 2, 

    "name": "Wonderful extension", 
    "description": "Wonderful extension - gets value from textbox", 
    "version": "1.0", 

    "browser_action": { 
    "default_icon": "images/icon.png", 
    "default_popup": "popup.html" 
    } 
} 

和popup.html是这样的:

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Wonderful Extension</title> 
    <script src="popup.js"></script>  
    </head> 
    <body> 

    <div style="padding: 20px 20px 20px 20px;">   
     <h3>Hello,</h3> 
     <p>Please enter your name : </p>   
     <input id="name_textbox" />     
     <button id="ok_btn" type="button">OK</button> 
    </div>  

    </body> 
</html> 

那么我们就可以绑定在文档中的事件以下列方式从文本框中获取值:

文件popup.js:

document.addEventListener('DOMContentLoaded', documentEvents , false); 

function myAction(input) { 
    console.log("input value is : " + input.value); 
    alert("The entered data is : " + input.value); 
    // do processing with data 
    // you need to right click the extension icon and choose "inspect popup" 
    // to view the messages appearing on the console. 
} 

function documentEvents() {  
    document.getElementById('ok_btn').addEventListener('click', 
    function() { myAction(document.getElementById('name_textbox')); 
    }); 

    // you can add listeners for other objects (like other buttons) here 
} 

进入弹出页面的其他元素,我们可以使用类似的方法。

相关问题