0

Есть ли способ переопределить методы localStorage и sessionStorage объекта из сценария контента? Я пытаюсь запретить встроенный скрипт для очистки хранилищ, выполнив этот код из моего расширения Chrome (скрипт контента, который запускается до загрузки страницы). Код:Переопределение метода хранения из сценария содержимого

// ==UserScript== 
// @name   StorageSaver 
// @match  http://barbars.org/* 
// @grant  none 
// @run_at  startup 
// ==/UserScript== 
/* jshint -W097 */ 
'use strict'; 

// Your code here... 
location.href = "javascript: localStorage.clear = function(){alert('local works!');}"; 
location.href = "javascript: sessionStorage.clear = function(){alert('session works!');}"; 
+0

вы можете очистить localStorage без вызова каких-либо методов с помощью delete + for-in ... – dandavis

+0

ваш код работает в консоли на этой странице, поэтому метод clear() может быть перезаписан, кажется, что это просто не получается. – dandavis

+0

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

ответ

0

Ах, я полагаю, вы пытаетесь выполнить

window.localStorage.clear = function() {}; 

в вашего скрипта содержимого. Сценарий вашего контента отличается от window, чем на странице, так что это не сработает. Обходной будет так же просто, как это:

location.href = "javascript: localStorage.clear = function(){}"; 

или нагнетание <script> тега.

Это будет выполнено на странице вместо объема вашего скрипта содержимого.

+0

Но будет ли он работать, если встроенный скрипт выполняет эти методы с помощью 'window'? Например: window.localStorage.clear(); window.sessionStorage.clear(); –

+0

'window.' является избыточным, поскольку вы уже выполняете код в' window' (глобальная область). –

+0

Просто попробовал заменить две строки в скрипте контента, как вы сказали. Безрезультатно. Хранилища продолжают очищаться после каждого обновления. –

 Смежные вопросы

  • Нет связанных вопросов^_^