爲了讓您瞭解我的知識基礎,我是一名計算機工程專業,現在正在一家醫療公司在夏季工作。我幾乎沒有(幾乎爲零的網絡代碼體驗),但這主要是我的工作要我這樣做,所以我一直在盡我所能地把它全部弄清楚。 我在學校使用了很多C,Verilog和C++,所以計算機的「語言」並不新鮮,但我很難將這些東西全部弄清楚。Chrome擴展程序,使鏈接從關鍵詞
無論如何,我的第一項任務是構建Chrome的擴展程序,鏈接到我們的Asterix電話服務器。所有必須做的是在網頁上查找電話號碼並將它們變成超鏈接,超鏈接將基於點擊的電話號碼,該部分是微不足道的。
所以,我讀了HTML,JS,阿賈克斯,jQuery的,DOM等..在W3學校的東西,所以在過去3天內我學到了很多東西=)
這是我公司生產的:
在我的情況下,似乎並不需要「backround.html」,因爲我需要做的就是在頁面加載後運行JS文件以查找phonenumbers並將其轉換爲鏈接。
所以我寫了一個清單文件,以及JS文件中搜索體內一些,把一個標籤周圍,(目前將www.google.com)
好消息是,它似乎工作。
壞消息是,這會導致Gmail在加載時凍結,並且使Hotmail無法連接,也無法更新和查看新消息。
我不認爲你甚至能夠在擴展的時候以這種方式「打破」網站。
我所有的代碼都非常小,所以我只是在這裏發佈它。
manifest.json的
{
"name": "Typenex Hyperlink-Dialer",
"version": "1.0",
"description": "This is a custom built extension for Typenex. This extension identifies phone numbers and allows the user to click the number to initiate a phonecall.",
"permissions": [
"tabs", "http://*/*", "https://*/*"
],
"browser_action": {
"default_title": "Typenex Hyperlink-Dialer",
"default_icon": "typenex_logo.png"
},
"content_scripts" : [
{
"matches" : ["http://*/*", "https://*/*"],
"js" : ["typenex_contentscript.js"],
"run_at" : "document_idle",
"all_frames" : false
}
],
"manifest_version": 2
}
typenex_contentscript.js
var arrayOfNumbers = [];
alert("hi");
var regex = /\d*[/-]*[0-9][0-9][0-9][/ -]*[0-9][0-9][0-9][/ -]*[0-9][0-9][0-9][0-9][ ]*/g;
newBody = document.body.innerHTML;
var i = 0;
do
{
temp = regex.exec(newBody);
if (temp != null)
arrayOfNumbers[i] = temp;
i++
}
while (temp)
for (var i = 0; i < arrayOfNumbers.length; i++)
{
newBody = newBody.replace(arrayOfNumbers[i], "<a href='http://www.google.com'>" + arrayOfNumbers[i] + "</a>");
}
document.body.innerHTML = newBody;
我任何幫助我可以得到感激,如果它看起來像我誤解的東西,你知道的東西我可以閱讀,這可能會有幫助,這將是偉大的,我一直在谷歌很多,但我可能不知道甚至提出正確的問題。
我非常開放的態度,如果你們任何人有更好的方法來解決這個簡單的擴展=)
只是爲了澄清,它適用於測試網站或gmail和hotmail以外的網站嗎? – DigTheDoug 2012-07-27 23:12:09
是的,在我的測試網站上它工作正常,但對於像gmail和Hotmail這樣的網站來說,它似乎不起作用,因爲它會使網站無限加載。在Hotmail中,如果我禁用擴展,然後打開一個帶有數字的電子郵件,啓用擴展和刷新,它可以工作,但Hotmail通知我它已經失去與Hotmail服務器的連接。我在所有的Google網站上都遇到了一些問題。 – njfife 2012-07-28 01:15:00
在您的代碼中,您將在最後替換整個innerHTML,不知是否重新創建DOM會迫使它重新建立與舊密鑰或簽名或其他類似的連接。你有沒有試過簡單地更新數字元素本身,而不是重寫整個頁面? – DigTheDoug 2012-07-28 03:31:11