私は、Delicious と同様の方法でリンクを保存する Chrome 拡張機能を作成しています。拡張機能の一部として、保存しているリンクのキーワードを保存したいと考えています。このキーワードを取得するために、次の関数を使用します。
EXT.get_keywords = function (tab) {
var keywords = [];
if(tab) {
chrome.tabs.executeScript(tab.id, {file:"js/keywords.js"},
(function(keywords) {
return function (res) {
var kw_str = res && res[0];
if (kw_str) {
keywords.push.apply(keywords, kw_str.split(","));
}
}
})(keywords));
}
console.log(keywords);
return keywords;
}
「js/keywords.js」ファイルの内容は次のとおりです。
var metas = document.getElementsByTagName('meta'),
i = 0,
result = "";
for (i = 0; i < metas.length; i++) {
if (metas[i].getAttribute("name") === "keywords") {
result = metas[i].getAttribute("content");
break;
}
}
result;
「js/keywords.js」スクリプトは非常にうまく機能し、コールバック関数は、存在する場合はキーワード タグからコンテンツ文字列を取得しますが、コールバックが実行された後、キーワード変数は常に[]
. 何か案が?
console.log(keywords)
PS:行にブレークポイントを付けてスクリプトを実行すると機能しますが、ブレークポイントが存在しない場合は機能しないため、非常に奇妙です:S.