2014-01-05 298 views
1

我是一個新手,我試圖做一個Chrome擴展,讓我在彈出窗口中顯示網站中某些類名的所有元素的ID。 我想知道我的實施是否是解決此問題的最佳選擇。 感謝您的幫助,併爲我可憐的英語感到抱歉。Chrome擴展

的manifest.json

{ 
    "name": "Test", 
    "version": "1.0", 
    "manifest_version" : 2, 
    "description": "", 

    "browser_action": { 
    "default_icon": "images/icon.png", 
    "default_popup": "popup.html" 
    }, 
    "permissions": [ "tabs","http://*/*" ] 
} 

popup.html

<!doctype html> 
<html> 
    <head> 
    <style> 
     body{ 
      height: 150px; 
      width: 800px; 
      overflow: hidden; 
      margin: 0px; 
      padding: 0px; 
      background: white; 
     } 
    </style> 
    <script src="scripts/popup.js"></script> 
    </head> 
    <body>  
    </body> 
</html> 

popup.js

// Inserting javascript code 
    chrome.tabs.executeScript(null, {file: "scripts/content.js"}); 

    // Sending request 
    chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { 
    chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) { 
    document.write(response.farewell); 
    }); 
    }); 

個content.js

// This function gets all the id of the elements that have a class name X and 
// returns them in a string separated by ",". 
function getId(className) { 
    // I get all elements containing className 
    var elements = document.getElementsByClassName(className); 

    // Creating array with id of the elements 
    var idElements= new Array(); 
    for (var i = 0; i < elements.length; i++) { 
    idElements[i]=elements[i].id; 
    } 

    // Concatenate all id 
    var list = idElements.join(" , "); 
    return list; 
} 

var result=getId("classNameTest"); 

// Listening for message from popup.js 
chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) { 
    if (request.greeting == "hello") 
     sendResponse({farewell: result}); 
    }); 

任何寶貴意見,謝謝!

回答