Есть ли у нас эквивалент API синхронизации ресурсов, который можно использовать из расширения браузера?

Я хочу прослушать все запросы, идущие со страницы (в том числе из фреймов, которые у него могут быть), и получить показатели, похожие на API синхронизации ресурсов для всех запросов. Я хочу быть в состоянии сделать это из фонового скрипта.

Я попытался ввести тег скрипта напрямую, который будет прослушивать события dom change, а затем использовать эти данные. но посмотрите на проблему 2 там 1. она не получает все события смены dom-фреймов. 2. Я не могу найти дополнительные звонки, сделанные из фреймов.

    {

      "manifest_version": 2,
      "name": "somwnamw",
      "version": "1.0",
      "author": "Me",
      "description": "Some desc",

      "icons": {
        "48": "icons/border-48.png"
      },

      "content_scripts": [
        {
            "matches": ["*://*.mydomain.com/*"],
        "js": ["trackIt.js"],
        "run_at": "document_start"
        }
      ],
      "background": {
        "scripts": ["background.js"]
      },
      "permissions": [
        "webRequest",
        "<all_urls>"
      ],
      "web_accessible_resources": ["pa.js"]

    }

Мой скрипт содержания имеет что-то вроде этого

            s.addEventListener('load', function(w) {

             });
            (document.body || document.documentElement).appendChild(s);

И сценарий, который я ввожу в дом выглядит так

    var observeDOM = (function(){
        var MutationObserver = window.MutationObserver || window.WebKitMutationObserver,
            eventListenerSupported = window.addEventListener;
        return function(obj, callback){
            if( MutationObserver ){
                // define a new observer
                var obs = new MutationObserver(function(mutations, observer){
                    if( mutations[0].addedNodes.length || mutations[0].removedNodes.length )
                        callback();
                });
                // have the observer observe foo for changes in children            
                obs.observe( obj, { childList:true, subtree:true });
            }
            else if( eventListenerSupported ){
                obj.addEventListener('DOMNodeInserted', callback, false);
                obj.addEventListener('DOMNodeRemoved', callback, false);
                obj.addEventListener('DOMAttrModified', callback, false);
                obj.addEventListener('DOMElementNameChanged', callback, false);
                obj.addEventListener('DOMNodeInsertedIntoDocument', callback, false);
                obj.addEventListener('DOMNodeRemovedFromDocument', callback, false);
                obj.addEventListener('DOMSubtreeModified', callback, false);
            }
        };
    })();

    // Observe a specific DOM element:
    observeDOM( document.documentElement,function(data){
        let performanceData = performance.getEntries();
        console.log(performanceData);
        aggregateDataForFPTI(performanceData.slice(perfDataLength, performanceData.length));
        perfDataLength = performanceData.length;

    });

Но мой вышеприведенный код не обнаруживает изменения dom, и я также не могу получать звонки из фреймов. Я вижу эти запросы в инструментах разработчика Chrome, хотя. здесь мои фреймы из того же домена.

Поэтому я хочу вместо этого переключиться на фоновый скрипт, а затем прослушать все звонки, происходящие со страницы, и узнать время ресурса.

0 ответов

Другие вопросы по тегам