首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用chrome扩展popup.html从新的弹出窗口中定位DOM元素

如何使用chrome扩展popup.html从新的弹出窗口中定位DOM元素
EN

Stack Overflow用户
提问于 2019-08-10 04:00:16
回答 1查看 839关注 0票数 0

我有一个运行良好的chrome扩展,我引用了一个函数,它会打开一个弹出窗口。通常,我如何从我的popup.js或popup.html文档访问新弹出的html dom元素(在同一个域中)。

代码语言:javascript
复制
function cfs_policy() { 
        chrome.tabs.query({active: true, currentWindow: true}, 
function(tabs) {
        // query the active tab, which will be only one tab
        //and inject the script in it
        chrome.tabs.executeScript(tabs[0].id, {file: 
"links/cfs_policy.js"});
    });
}
function d_cfs_policy() {   
        chrome.tabs.query({active: true, currentWindow: true}, 
function(tabs) {
        // query the active tab, which will be only one tab
        //and inject the script in it
        chrome.tabs.executeScript(tabs[0].id, {file: 
"links/d_cfs_policy.js"});
    });
}
document.getElementById('cfs').addEventListener('click', cfs);
document.getElementById('d_cfs').addEventListener('click', d_cfs);
document.getElementById('cfs_policy').addEventListener('click', 
cfs_policy);
document.getElementById('d_cfs_policy').addEventListener('click', 
d_cfs_policy);

代码段cfs_policy.js

代码语言:javascript
复制
function cfs_policy(){
var x = document.getElementById('tabFrame');
var y = x.contentDocument ;
var els = y.getElementsByTagName('table')[8]
els.getElementsByClassName('actionIcon editIconBtn')[0].click()
els.focus();
}
cfs_policy()

代码段d_csf_policy.js

代码语言:javascript
复制
function d_cfs_policy(){
console.log('test')
}
d_cfs_policy()

代码段popup.html

代码语言:javascript
复制
<button class="collapsible" id="cfs">CFS Objects</button> 
<div class="content">
<table>
<tr>
<td>
<button id="d_cfs">Download</button>
<button class="collapsible" id="cfs_policy">Policies</button> 
<div class="content"><button id="d_cfs_policy">Download</button></div>
</td>   
</tr>
</table>
</div>  
</div>  
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-14 07:04:39

我实际上一直在做我一直想做的事情。按名称确定窗口的目标。您可以在第8行看到,当单击该按钮时,它将打开一个窗口。然后在第14行,我引用了相同的窗口,我可以自由地从第15行获取对象。谢谢你的帮助。我希望阅读这篇文章的人能理解并发现它是有用的。

代码语言:javascript
复制
function cfs_policy(){
var test;
var x = document.getElementById('tabFrame');
var y = x.contentDocument ;
var els = y.getElementById('profileTable')
els = els.getElementsByClassName('listItem')
for(i=0;i<els.length;i++){
    els[i].getElementsByClassName('actionIcon editIconBtn')[0].click()
    setTimeout(function(){
        test = String(window.origin)
        test = test.substring(8,)
        test = test.replace(/\:.*/,'');
        test = test.split('.')
        var existingWin = window.open('', test[0]+ "_" + test[1] + "_" + test[2] + "_" + test[3] + "_profileObjDlg");
        var lab = existingWin.document.getElementsByClassName('label')
        var val = existingWin.document.getElementsByName('objName')
        var sel = existingWin.document.getElementsByTagName('select')
        test = lab[0].innerText + val[0].value + "\n"
        var p;
        var cat;
        for (let p = 5; p < 62; p++) {
            try {
                if (sel[p-1].value == 0) {cat = "Allow"}
                else if (sel[p-1].value == 1) {cat = "Block"}
                else if (sel[p-1].value == 2) {cat = "BWM"}
                else if (sel[p-1].value == 3) {cat = "Confirm"}
                else if (sel[p-1].value == 4) {cat = "Passphrase"}
                test += lab[p].innerText + " : " + cat + "\n"           
                console.log(test)
            }
            catch(error) {
            }

        }
        }, 3000);
    }
}
cfs_policy()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57436438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档