Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Andrew9
0 / 0 / 2
Регистрация: 28.04.2013
Сообщений: 95
#1

OnPageFinished insert js - Программирование Android

25.04.2016, 12:55. Просмотров 410. Ответов 4
Метки нет (Все метки)

Помогите разобраться с такой задачей, в методе onPageFinished не срабатывает скрипт. Сайт просто загружается и все.
Не получается вставить именно скрипт. Если в link1 и link2 поместить текст или ссылку на картинку загружаемого сайта - то все работает на ура.

пробовал еще
Java
1
webView.loadUrl("javascript:document.write('hello')");
Алерт выскакивает но тогда страница становится белой (пропадает вообще).

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
myWebView.setWebViewClient(new WebViewClient() {
 
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
 
                myWebView.loadUrl(url);
                testKey = false;
                return true;
            }
 
            @Override
            public void onPageStarted(WebView view, String url,
                                      Bitmap favicon) {
                if (testKey == false) {
                    myView.setText("started");
                }
 
            }
 
            public void onPageFinished(WebView view, String url) {
                if (testKey == false) {
                    testKey = true;
                    
                    myWebView.getSettings().setJavaScriptEnabled(true);
                    myWebView.getSettings().setDomStorageEnabled(true);
                    String link1 = "<div";
                    String link2 = "<script> alert( 'Hello World' ); </script> <div";
                    myWebView.loadUrl("javascript:(function(){document.body.innerHTML = document.body.innerHTML.replace('"+link1+"', '"+link2+"')})()");
                    myView.setText("js complete");
                }
            }
        });
        myWebView.loadUrl("http://lexandera.com/2009/01/injecting-javascript-into-a-webview/");

http://www.cyberforum.ru/android-dev/thread1280444.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2016, 12:55
Я подобрал для вас темы с готовыми решениями и ответами на вопрос OnPageFinished insert js (Программирование Android):

SQlite Insert, delete, update
Добрый день. Возник такой вопрос. Есть база с таблицей MailSettings. Она...

Метод insert не видит значения edit-ов
Метод insert не видит значения edit-ов(вернее видит только если их явно указать...

SQLite как получить номер записи из INSERT
Собственно САБЖ. Не знаю команды. Уже все перерыл! :( Есть база с id INTEGER...

Перенос параметра при INSERT в другой запрос INSERT
Здравствуйте. Есть таблица Сlient, в которую при INSERT ClientID присваивается...

Как программно отловить Selection.Insert Shift:=xlDown , Selection.EntireRow.Insert?
Как программно отловить Selection.Insert Shift:=xlDown ,...

4
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
25.04.2016, 14:03 #2
Andrew9, предполагаю, что сайт чужой и вы не хотите править там саму HTML-страницу. Потому что если можно было поправить, я бы порекомендовал способ через JavascriptInterface.
Вы уверены, что "<div" там ровно один? Я поглядел, там их масса. Идём дальше, допустим, вы заменили какой-то конкретный тег. Действительно ли яваскрипт после этого выполнится? Не надо ли также вставить в "<script>" описание, что это javascript? Много всего может быть.
0
Andrew9
0 / 0 / 2
Регистрация: 28.04.2013
Сообщений: 95
25.04.2016, 14:12  [ТС] #3
да <div масса...

Я пробовал <script>...</script> который есть на сайте, полностью заменить на свой но он не отрабатывает. Не знаю почему.

В идеале было бы сделать replace("<body>","<body> myJS \n");
Но скрипт берет то что внутри body и сам этот тэг не видит.


На счет того что явно нужно указать что это js, не уверен ибо
Java
1
myWebView.loadUrl("javascript:(function(){document.body.style.backgroundColor = "yellow"})()");
Выполняется на ура
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
25.04.2016, 14:19 #4
Andrew9, сделайте на внешнем хостинге нормальный HTML для тестов, где будет всего лишь один <div>, попробуйте сначала на простых случаях. Куда вы сразу на сложные?
0
Andrew9
0 / 0 / 2
Регистрация: 28.04.2013
Сообщений: 95
26.04.2016, 11:16  [ТС] #5
Вот типа так, помогите привести к рабочести )
Java
1
2
3
          String link1 = "<body>";
                    String link2 = "<body> \n <script> alert( 'Hello World' ); </script> \n";
                    myWebView.loadUrl("javascript:(function(){document.getElementsByTagName('html')[0].replace('"+link1+"', '"+link2+"')})()");
Добавлено через 1 час 0 минут
Java
1
document.getElementsByTagName('html')[0]
не возвращает теги, а только содержимое. По этому та замена что я хочу сделать - не срабатывает. Подскажите как исправить

Добавлено через 18 минут
Знающие подскажите, совсем уже запутался.

Так не работает! (текст остается на месте)
Java
1
2
3
String link1 = "Here’s a simple example which loads a page and then sets its text color to red:";
                    String link2 = "<script> alert( 'Hello World' ); </script>";
                    myWebView.loadUrl("javascript:(function(){document.body.innerHTML = document.body.innerHTML.replace('"+link1+"', '"+link2+"')})()");


А так работает, текс меняется на "Какой то текст"
Java
1
2
3
String link1 = "Here’s a simple example which loads a page and then sets its text color to red:";
                    String link2 = "Какой то текст";
                    myWebView.loadUrl("javascript:(function(){document.body.innerHTML = document.body.innerHTML.replace('"+link1+"', '"+link2+"')})()");
Это при загрузке
Java
1
myWebView.loadUrl("http://lexandera.com/2009/01/injecting-javascript-into-a-webview/");
Добавлено через 19 часов 11 минут
Нашел решение, всем спасибо.
0
26.04.2016, 11:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2016, 11:16
Привет! Вот еще темы с решениями:

INSERT, вложенный в INSERT
Господа формучане, доброго времени суток. У меня мало опыта работы с...

Insert
Здравствуйте! Хочу сделать запрос что б с одной таблицы добавлялась в другую...

Insert ()
Здравствуйте. Подскажите, пожалуйста, в этом коде процедура insert () -...

INSERT INTO
Здравствуйте, уважаемые. Помогите решить такую задачу: Имеется две таблицы в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru