В Javascript вы можете создать якорь с URI данных в виде HREF и программно щелкнуть ссылку, чтобы «загрузить» данные. Это прекрасно работает в Chrome. Расширение Chrome может перехватывать извлечение контента из Интернета, подключая webRequest.onBeforeRequest с фильтром 'all_urls'. Это нормально работает для обычных HTTP-запросов, но не работает для меня с щелчком URI программных данных.
У меня такой вопрос: это ошибка / будущая функция ( эта может быть) или есть какой-то другой интерфейс для перехвата доступа к данным URI?
Вот мой тестовый код Javascript:
<html>
<head>
<script lang="javascript">
function download(filename, text)
{
var element = document.createElement('a');
element.setAttribute(
'href',
'data:text/plain;charset=utf-8,' + encodeURIComponent(text)
);
element.setAttribute('download', filename );
element.style.display = "none";
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}
function go()
{
download("hello.txt","Hi there");
}
</script>
</head>
<body onload="go();">
Testing
</body>
</html>
Вот мой код расширения Chrome:
function checker(details)
{
var bkg = chrome.extension.getBackgroundPage();
bkg.console.log( JSON.stringify(details));
}
chrome.webRequest.onBeforeRequest.addListener(
checker,
{urls: ["<all_urls>"]},
["blocking"]
);