Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2014, 17:41   #11
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 823
По умолчанию

Цитата:
Выдает(Uncaught TypeError: Cannot call method 'setAttribute' of undefined )
Вы пытаетесь вызывать метод setAttribute у переменной, значение которое пустое - undefined.

Код я дал ещё во втором посте. Ваш обрывок кода мне не понятен (его либо мало, либо там всё выброшено), поэтому я не знаю как объяснить. Попробуйте перечитать тему, а затем написать то, как вы поняли ситуацию. Я поправлю где будет не правильно.
^-.-^ My GitHub

Последний раз редактировалось Fenex; 17.03.2014 в 18:00.
Fenex вне форума Ответить с цитированием
Старый 17.03.2014, 17:47   #12
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
Смущение

Цитата:
Сообщение от Fenex Посмотреть сообщение
Вы пытаетесь вызывать метод setAttribute у переменной, значение которое пустое - undefined.

Код я дал ещё во втором посте. Ваш обрывок кода мне не понятен (его либо мало, либо там всё выброшено), поэтому я не знаю как объяснить. Попробуйте перечитать тему, а затем написать то, как вы поняли ситуацию. Я поправлю где будет не правильно.

Вот здесь можете посмотреть пример кода, хотя там много букв.
https://github.com/Fenex/KTS/blob/bb...r.js#L350-L356

Код:
$.get(chrome.extension.getURL('/zxc.js'), 
    function(data) {
        var script = document.createElement("script");
        script.setAttribute("type", "text/javascript");
        script.innerHTML = data;
        document.getElementsByTagName("head")[0].appendChild(script);	
        document.getElementsByTagName("body")[0].setAttribute("onLoad", "main();");
	
    }
);
Сам код, что я пишу для страницы. Написан в файле /zxc.js. в функции main(). При помощи этого я могу удалять объекты из документа.

Не знаю как ваш скрипт прописать так, чтобы работал файл zxc.js

Код:
	var s = document.createElement('style');
        s.innerHTML = 'body {display: none;}';
        document.head.appendChild(s); //apply
        document.head.removeChild(s); //clean up
Как то так?
Код:
$.get(chrome.extension.getURL('/zxc.js'), 
    function(data) {
	    var s = document.createElement('style');
        s.innerHTML = 'body {display: none;}';
		document.head.appendChild(s); //apply
		
		
        var script = document.createElement("script");
        script.setAttribute("type", "text/javascript");
        script.innerHTML = data;
        document.getElementsByTagName("head")[0].appendChild(script);
		
        document.head.removeChild(s); //clean up
		
        document.getElementsByTagName("body")[0].setAttribute("onLoad", "main();");
		

    }
);
В манифесте выставил "run_at": "document_start"
Predator199 вне форума Ответить с цитированием
Старый 17.03.2014, 17:52   #13
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 823
По умолчанию

Скорее как-то так наверное.
Код:
$.get(chrome.extension.getURL('/zxc.js'), 
    function(data) {
        var s = document.createElement('style');
        s.innerHTML = 'body {display: none;}';
        document.head.appendChild(s); //apply
        document.head.removeChild(s); //clean up
        
        var script = document.createElement("script");
        script.setAttribute("type", "text/javascript");
        script.innerHTML = data;
        document.head.appendChild(script);
		
        function try_inject() {
            if(document && document.body)
                document.body.setAttribute("onLoad", "main();");
            else
                setTimeout(try_inject, 50);
        }
        
        setTimeout(try_inject, 50);
    }
);
^-.-^ My GitHub

Последний раз редактировалось Fenex; 17.03.2014 в 17:57.
Fenex вне форума Ответить с цитированием
Старый 17.03.2014, 17:56   #14
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 823
По умолчанию

А, ну и по логике, раз вы проводите изменения с DOM'ом в функции main, то в ней же (в конце) надо отображать body. Хотя это как-то идеологически совсем не правильно. Да и вообще, все изменения с DOM надо проводить в этом же скрипте, а не врезаться в существующую область видимости страницы.
^-.-^ My GitHub

Последний раз редактировалось Fenex; 17.03.2014 в 18:03.
Fenex вне форума Ответить с цитированием
Старый 17.03.2014, 18:15   #15
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
Смущение

Цитата:
Сообщение от Fenex Посмотреть сообщение
А, ну и по логике, раз вы проводите изменения с DOM'ом в функции main, то в ней же (в конце) надо отображать body. Хотя это как-то идеологически совсем не правильно. Да и вообще, все изменения с DOM надо проводить в этом же скрипте, а не врезаться в существующую область видимости страницы.
Не подскажите тогда. Как правильно все это прописать в одном скрипте. Чтобы лишний раз не обращаться к функции , не подгружать еще один скрипт и тп.

Код:
$.get(chrome.extension.getURL('/zxc.js'), 
    function(data) {
        var s = document.createElement('style');
        s.innerHTML = 'body {display: none;}';
        document.head.appendChild(s); //apply
        document.head.removeChild(s); //clean up
        
        var script = document.createElement("script");
        script.setAttribute("type", "text/javascript");
        script.innerHTML = data;
        document.head.appendChild(script);
		
        function try_inject() {
            if(document && document.body){
                      alert('f');
		       $('.polloptionsblock').remove();
	               $('.below_body').remove();
		}       
        }
        
        setinterval(try_inject, 1000);
    }
);
Как то так?

У меня ,что та через условие не проходит. Не выдает алерт.

Последний раз редактировалось Predator199; 17.03.2014 в 18:18.
Predator199 вне форума Ответить с цитированием
Старый 17.03.2014, 18:21   #16
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 823
По умолчанию

"setinterval" написано неправильно. По идеи в консоли должна была отобразиться ошибка с пояснениями.

Остановить постоянный вызов функции try_inject не забудьте.
^-.-^ My GitHub

Последний раз редактировалось Fenex; 17.03.2014 в 18:23.
Fenex вне форума Ответить с цитированием
Старый 17.03.2014, 19:02   #17
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
Подмигивание

[QUOTE=Fenex;1353276]"setinterval" написано неправильно. По идеи в консоли должна была отобразиться ошибка с пояснениями.


Спс. Скажите.
Для чего это прописываем
Код:
$.get(chrome.extension.getURL('/zxc.js'), 
    function(data) {
Удалял
Код:
.getURL('/zxc.js')
Дак ошибку пишет.
Для чего эта функция, нельзя ли без нее?

манифест
Код:
{
  "name": "JS ffgx",
  "version": "1.0",
  "manifest_version": 2,
  "content_scripts": [
    {
      "matches": [ "http:///threads/*", "http:///*" ],
      "js": ["/jquery.js",  "/background.js"],
	  "run_at": "document_start"
    }
  ],
  "web_accessible_resources": [
    "/zxc.js"
  ]
}
У меня скрипт работает в баграунде. Как правильно прописать, чтобы избавиться от /zxc.js?

Последний раз редактировалось Predator199; 17.03.2014 в 20:48.
Predator199 вне форума Ответить с цитированием
Старый 18.03.2014, 17:58   #18
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 823
По умолчанию

У вас видимо нет полного понимания философии расширений хрома (кстати, подобный подход используется много где ещё). А документация на самом деле шикарна, к ней не придраться. Даже есть видео с презентаций (как раз подходят для понимания философии). И ещё есть плейлист быстрого старта. Минут 20 и все основные моменты будут понятны.

Цитата:
Для чего эта функция, нельзя ли без нее?
Если вы про функцию chrome.extension.getURL, то исчерпывающее описание есть здесь: http://developer.chrome.com/extensio...#method-getURL
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кнопка функции Открытия Веб Браузера? ProGec4 Windows Forms 1 22.02.2012 21:19
C#: нужно проанализировать веб-страницу Manonia Общие вопросы .NET 4 11.05.2010 07:50
Скриншот веб-страницы по URL без ее открытия в TWebBrowser. SkAndrew Общие вопросы Delphi 6 25.04.2010 21:08
ссылки на веб-страницу в Delphi, как? UNREALcv Помощь студентам 7 05.01.2010 00:37
как загрузить в окно веб страницу? proglamer Работа с сетью в Delphi 3 07.09.2007 20:10