2013-02-15 47 views
0

多多包涵,如果這聽起來太簡單了吧。獲取DIV級ID上單擊使用jQuery

我寫一個Chrome擴展程序,一旦用戶在頁面的對象上點擊右鍵,出現的上下文菜單,並在那裏,他有一個選項,以獲取該ID的點擊DIV級的+評級。

我一直在這幾天和管理,以額外的按鈕添加到右鍵菜單。一旦這些按鈕被點擊,該頁面的源被記錄下來。可能會讓我花更少的時間來做這件事,但這是我第一次用javascript寫作,並且我一直陷入困境。

反正我不希望首頁的整個HTML代碼,但點擊DIV級。我谷歌搜索後,事實證明,最好的方法是通過使用jquery的「html」函數而不是純JavaScript。問題是它不適合我。

這裏是我的代碼:

BackgroundPage(一切似乎都在這裏工作的罰款)

function genericOnClick(tab) 
    { 
     console.log(tab.pageUrl); 

     chrome.tabs.getSelected(null, function(tab) 
     { 
      chrome.tabs.sendMessage(tab.id, {action: "getSource"}, function(source) { 
      console.log(source); 
      }); 
     }); 

    } 


    // Create a parent item and two children. 
    var parent1 = chrome.contextMenus.create({"title": "Rank Trigger", "contexts":["all"]}); 

    var child1 = chrome.contextMenus.create 
    (

    {"title": "Rank 1", "contexts":["all"], "parentId": parent1, "onclick": genericOnClick} 
); 
var child2 = chrome.contextMenus.create 
(
    {"title": "Rank 2", "contexts":["all"], "parentId": parent1, "onclick": genericOnClick} 
); 
var child3 = chrome.contextMenus.create 
(
    {"title": "Rank 3", "contexts":["all"], "parentId": parent1, "onclick": genericOnClick} 
); 

ContentPage:(問題就在這裏)

chrome.extension.onMessage.addListener(function(request, sender, callback) 
{ 
    if (request.action == "getSource") 
    { 
    // callback(document.documentElement.outerHTML); //here i can get the page's whole source, I only want the clicked div class 
    callback($('div class).html(); <--- something wrong here 
    } 

    }); 

清單文件:

{ 
    "name": "x", 
    "description": "x", 
    "version": "0.1", 
    "permissions": ["contextMenus", "tabs"], 
    "content_scripts": 
    [ 
    { 
     "matches": ["http://*/*","https://*/*"], 
     "js": ["jquery.js", "content.js"], 
     "run_at": "document_end" 
    } 
    ], 
    "background": 
    { 
    "scripts": ["background.js"] 
    }, 
    "manifest_version": 2 
} 

有什麼想法?我再次知道我的問題看起來很簡單,但我自己都在自學,所以出於某種原因,我發現網絡編程比應用程序編程更困難。

非常感謝。

編輯:只是爲了澄清我想要的html源代碼是這樣的: <div class="story reviewed-product-story" data-story-id="488481648"....</div>。 我想要這個div類,以便我可以解析它以獲取數據故事標識。如果有一種方式來獲得的ID沒有得到股利類第一那麼也將工作(甚至更好)

編輯:感謝Adeneo,我現在就可以拿到第一個div類的ID在頁面的來源中,但不是點擊的。向前邁進了一步,但並不完全符合我的需求。 也許我必須使用$之前得到點擊div的來源(「故事‘)。數據(’故事-ID」)。有什麼建議麼?

回答

1

我猜測它應該是:

chrome.extension.onMessage.addListener(function(request, sender, callback) { 
    console.log('message listener'); 
    if (request.action == "getSource") { 
     callback($('.story').data('story-id')); 
    } 
}); 
+0

無不是真的。編輯該問題以獲得更多解釋。感謝您的回答:) – r3x 2013-02-15 16:17:23

+0

@ r3x - 改變它,這是否更接近? – adeneo 2013-02-15 16:21:10

+0

沒有,不幸的是沒有工作。 data('story-id')));沒有任何東西被記錄,更多的是當我寫alert($('。story')。我得到空...也許我調用jquery方法都是錯誤的,它應該是jquery.data或類似的東西。無論如何,謝謝:) – r3x 2013-02-15 16:47:46