Size: a a a

2021 July 20

S

Slava in DC7495
я с огурца
источник

S

Slava in DC7495
источник

S

Slava in DC7495
Ну, там на примере экстеншена, но методы те же
источник

|P

|3R☣️M Puppy 🐶... in DC7495
Так у экстенщена прав больше
источник

|P

|3R☣️M Puppy 🐶... in DC7495
И экстенщен в контексте браузера работает
источник

S

Slava in DC7495
да при чём тут экстеншен бля?
источник

S

Slava in DC7495
я тебе про методы говорю
источник

|P

|3R☣️M Puppy 🐶... in DC7495
Экстеншен может делать инжект скрипта
источник

|P

|3R☣️M Puppy 🐶... in DC7495
Что там и делается
источник

S

Slava in DC7495
да бля, ну вот я не ебу как вести диалог с теми, кому лень хотя бы посмотреть о чём идёт речь
источник

S

Slava in DC7495
<script type="text/javascript">
(function() {
 if ('PerformanceObserver' in window && 'PerformancePaintTiming' in window) {
   window.__bufferedPerformance = [];
   var ob = new PerformanceObserver(function(e) {
     window.__bufferedPerformance.push.apply(window.__bufferedPerformance,e.getEntries());
   });
   ob.observe({entryTypes:['paint']});
 }

 window.__bufferedErrors = [];
 window.onerror = function(message, url, line, column, error) {
   window.__bufferedErrors.push({
     message: message,
     url: url,
     line: line,
     column: column,
     error: error
   });
   return false;
 };
 window.__initialData = {
   pending: true,
   waiting: []
 };
 function asyncFetchSharedData(extra) {
   var sharedDataReq = new XMLHttpRequest();
   sharedDataReq.onreadystatechange = function() {
         if (sharedDataReq.readyState === 4) {
           if(sharedDataReq.status === 200){
             var sharedData = JSON.parse(sharedDataReq.responseText);
             window.__initialDataLoaded(sharedData, extra);
           }
         }
       }
   sharedDataReq.open('GET', '/data/shared_data/', true);
   sharedDataReq.send(null);
 }
 function notifyLoaded(item, data) {
   item.pending = false;
   item.data = data;
   for (var i = 0;i < item.waiting.length; ++i) {
     item.waiting[i].resolve(item.data);
   }
   item.waiting = [];
 }
 function notifyError(item, msg) {
   item.pending = false;
   item.error = new Error(msg);
   for (var i = 0;i < item.waiting.length; ++i) {
     item.waiting[i].reject(item.error);
   }
   item.waiting = [];
 }
 window.__initialDataLoaded = function(initialData, extraData) {
   if (extraData) {
     for (var key in extraData) {
       initialData[key] = extraData[key];
     }
   }
   notifyLoaded(window.__initialData, initialData);
 };
 window.__initialDataError = function(msg) {
   notifyError(window.__initialData, msg);
 };
 window.__additionalData = {};
 window.__pendingAdditionalData = function(paths) {
   for (var i = 0;i < paths.length; ++i) {
     window.__additionalData[paths[i]] = {
       pending: true,
       waiting: []
     };
   }
 };
 window.__additionalDataLoaded = function(path, data) {
   if (path in window.__additionalData) {
     notifyLoaded(window.__additionalData[path], data);
   } else {
     console.error('Unexpected additional data loaded "' + path + '"');
   }
 };
 window.__additionalDataError = function(path, msg) {
   if (path in window.__additionalData) {
     notifyError(window.__additionalData[path], msg);
   } else {
     console.error('Unexpected additional data encountered an error "' + path + '": ' + msg);
   }
 };
 
})();
</script>
источник

S

Slava in DC7495
Нахер.
Гуглите сами, надоело
источник

|P

|3R☣️M Puppy 🐶... in DC7495
Конкретно вот эта ссылка на мой вопрос не отвечает, не гори
источник

S

Slava in DC7495
Читать учимся.
Ещё раз: по ссылке пример методов, не сами методы
источник

|P

|3R☣️M Puppy 🐶... in DC7495
Евент листенер в контекст страницы как попадает?
источник

S

Slava in DC7495
ну код выше же скинул даже
источник

|P

|3R☣️M Puppy 🐶... in DC7495
Так в статье его нет
источник

|P

|3R☣️M Puppy 🐶... in DC7495
А вопрос был именно про попадание в контекст не своей страницы
источник

S

Slava in DC7495
ой, всё
источник

S

Slava in DC7495
это бесполезно, один фиг не поймёшь
источник