Chrome performance.timing неправильные выходы (НЕ СООТВЕТСТВУЯ DEV-TOOLS) - PullRequest
0 голосов
/ 04 декабря 2018

Я кодировал простое расширение для перенаправления своей веб-страницы на нужный сайт с отключенным JavaScript через настройки контента для всех URL-адресов.

Мой код

  1. Я жду страницустатус "завершен", хотя мой фоновый скрипт
  2. Когда страница завершена, я внедряю скрипт через chrome.tabs.executescript ()
  3. Мой скрипт использует chrome.runtime.sendMessage () для отправкижелаемую статистику обратно на фоновую страницу моего расширения, где я их распечатываю.
  4. Затем я перенаправляю эту страницу по указанному URL-адресу (с жестким кодом "google.com")
  5. Вернуться к шагу 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

enter image description here

Манифест

{
    "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
    //  }
    // );


});

1 Ответ

0 голосов
/ 04 декабря 2018

enter image description here

Проблема связана с файлом chrome.tabs.update (mytabid, {url: b}) в (Background.js).Обычно, когда мы запрашиваем веб-страницу, она запускает событие navigation.start, но когда мы перенаправляем веб-страницу, хрому требуется время после redirect.end, который является DomainlookupStart.

Можно также выбрать начало выборки, но для этого случаяКэш браузера был отключен, поэтому нет смысла брать fetchStart.

Для точного ответа измените background.js

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

TO

Dom_loaded : performance.timing.domContentLoadedEventEnd-performance.timing.domainLookupStart,
on_load : performance.timing.loadEventEnd - performance.timing.domainLookupStart,
Dom_count : document.getElementsByTagName('*').length,              
req_count : window.performance.getEntriesByType("resource").length
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...