Я кодировал простое расширение для перенаправления своей веб-страницы на нужный сайт с отключенным JavaScript через настройки контента для всех URL-адресов.
Мой код
- Я жду страницустатус "завершен", хотя мой фоновый скрипт
- Когда страница завершена, я внедряю скрипт через chrome.tabs.executescript ()
- Мой скрипт использует chrome.runtime.sendMessage () для отправкижелаемую статистику обратно на фоновую страницу моего расширения, где я их распечатываю.
- Затем я перенаправляю эту страницу по указанному URL-адресу (с жестким кодом "google.com")
- Вернуться к шагу 1
Моя цель состоит в том, чтобы несколько раз прочитать "https://google.com" время загрузки страницы с подсчетом DOM, подсчетом ресурсов и т. Д. Хотя это не дает никакой ошибки, но предоставляемое время не совпадает с Dev-Синхронизация инструментов. Теперь я не уверен, что это не тот Dev-Tool или Performance.Timings. Только в первый раз он совпадает с таймингами после того, как мои перенаправления никогда не совпадают с chrome DEV-TOOL.
Если кто-то хочетЧтобы проверить это, я включил весь приведенный ниже код.
МОЙ СТРОИТЕЛЬСТВО CHROME НИЖЕ
Windows 10 (64 Bit) also tested on UBUNTU 16.04 with Chromium 70.0.3538.77
Google Chrome 70.0.3538.110 (Official Build) (64-bit)
Revision ca97ba107095b2a88cf04f9135463301e685cbb0-refs/branch-heads/3538@{#1094}
OS Windows
JavaScript V8 7.0.276.40
Flash 31.0.0.153
Мой формат печати: URL, DOM_Loaded, ON_LOAD, DOM_Count, Req_Count
Dom_loaded : performance.timing.domContentLoadedEventEnd-performance.timing.navigationStart,
on_load : performance.timing.loadEventEnd - performance.timing.navigationStart,
Dom_count : document.getElementsByTagName('*').length,
req_count : window.performance.getEntriesByType("resource").length
Манифест
{
"name" : "JS BLOCK settings",
"version" : "1",
"description" : "Block JS of Brower",
"icons":{
"128" : "js-logo.png",
"48" : "js-logo.png",
"16" : "js-logo.png"
},
"permissions": [
"browsingData",
"contentSettings",
"tabs",
"<all_urls>"
],
"browser_action": {
"default_icon": "js-logo.png"
},
"background": {
"scripts": ["background.js"]
},
"externally_connectable": {
"ids": [
"*"
],
"matches": ["https://www.google.com/"],
"accepts_tls_channel_id": false
},
"manifest_version": 2
}
self_script.js
function send_stats(){
chrome.runtime.sendMessage(
{
Dom_loaded : performance.timing.domContentLoadedEventEnd-performance.timing.navigationStart,
on_load : performance.timing.loadEventEnd - performance.timing.navigationStart,
Dom_count : document.getElementsByTagName('*').length,
req_count : window.performance.getEntriesByType("resource").length
}, function(response) {
}
);
console.log("IT WORKS");
}
send_stats();
background.js
document.addEventListener('DOMContentLoaded', blockjs);
var mytabid = 0
var b = "https://google.com"
chrome.tabs.onUpdated.addListener(
function (tabId , info) {
if (info.status == 'complete') {
mytabid = tabId
console.log("Going to exec")
chrome.tabs.executeScript(tabId , {
file: "self_script.js"
// code: new_redirect
});
setTimeout(function(){
console.log("JUST BEFORE UPDATE")
chrome.tabs.update(mytabid,{url: b})
},5000)
}
});
function blockjs(tab) {
chrome.contentSettings['javascript'].set({
primaryPattern: "<all_urls>",
setting: 'block'
})
}
// URL,DOM_Loaded,ON_LOAD,DOM_Count,Req_Count
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log(sender.tab.url+","+request.Dom_loaded+","+request.on_load+","+request.Dom_count+","+request.req_count)
// var millisecondperhour = 3600000;
// var onehourago = (new Date()).getTime() - millisecondperhour;
// chrome.browsingData.remove({
// "since": onehourago
// }, {
// "appcache": true,
// "cache": true,
// "cookies": true
// }
// );
});