【发布时间】:2014-03-04 00:15:10
【问题描述】:
我正在为 chrome 编写一个简单的内容脚本,它使用 google 的 tts api 读取网页上的文本。该脚本适用于 google.co.uk 下的域,但不适用于其他页面。
(使用帮助:按下'0'键后播放选定的文本)
manifest.json:
{
"manifest_version": 2,
"name": "text reader",
"description": "text reader using google's text to speech api",
"version": "0.1",
"content_scripts": [{
"matches": ["<all_urls>"],
"js": ["tts.js"]
}],
"permissions": [
"http://*/",
"https://*/"
]
}
tts.js:
function Tts() {
var ttsurl = "https://translate.google.co.uk/translate_tts";
var audio = new Audio();
audio.onloadeddata = function() {
audio.play();
};
this.read = function(text) {
var url = ttsurl + "?q=" + escape(text) + "&tl=en";
audio.src = url;
alert(url);
}
}
var tts = new Tts();
document.onkeypress = function() {
if(event.keyCode == 48) { //key '0' pressed
var text = getSelection();
tts.read(getSelection().toString());
}
}
有没有一种从内容脚本发出跨域请求的好方法?我也很高兴更改浏览器的设置。我尝试过:为所有 URL 设置权限(请参阅 manifest.json 权限)
【问题讨论】:
标签: google-chrome same-origin-policy content-script