2

電話番号を ahref タグに置き換える Chrome 拡張機能があります。この ahref タグで、javascript 関数を呼び出したいと思います。簡単にするために、「javascript:alert('hey')」を href 値として使用しています。以下を実行すると、アラート機能では「regs is not defined」が表示されますが、console.log では正しい値が表示されます。関連する既存の質問に追加しようとしましたが、誰かがそれを削除して、新しい質問を投稿するように依頼しました。

本文中のキーワードからリンクを作成する Chrome 拡張機能

var re = /(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]??)\s*)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)([2-9]1[02-9]??|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})/
var regs;

var walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, function(node) {

if((regs = re.exec(node.textContent))) {

// make sure the text nodes parent doesnt have an attribute we add to know its all ready been highlighted
if(!node.parentNode.classList.contains('highlighted_text')) {
 var match = document.createElement('A');
 match.appendChild(document.createTextNode(regs[0]));
 console.log(regs[0]);
 match.href = "javascript:alert(regs[0])";
 console.log(node.nodeValue);

// add an attribute so we know this element is one we added
// Im using a class so you can target it with css easily
match.classList.add('highlighted_text');

var after = node.splitText(regs.index);
after.nodeValue = after.nodeValue.substring(regs[0].length);
node.parentNode.insertBefore(match, after);

}
}
return NodeFilter.FILTER_SKIP;
}, false);



// Make the walker step through the nodes
walker.nextNode();
4

2 に答える 2

0

次のコードを使用してこれを機能させました。

match.setAttribute("title", regs[0]);
match.href = "#";
match.addEventListener("click", function(){ make_call('210',this.title); }, false);

次に、XMLHttpRequest を使用して、内線番号と電話番号を、通話を行う外部スクリプトに渡します。

現在の唯一の問題は、Gmail や Google マップにある電話番号では機能しないことです。

于 2013-05-07T16:41:26.843 に答える