Jump to content
Korean Random

Delphi chromium Eaccess violation


noveek

Recommended Posts

Получаю ошибку при попытке кликнуть программно на кнопку в открытой странице браузера

procedure Button1Click(Sender: TObject);
var
JSCode:String;
begin
JSCode := 'document.getElementsByName("Новая Тема").click'; // кнопка с title="Новая Тема" 
Chromium1.Browser.MainFrame.ExecuteJavaScript(JSCode,'about:blank',0); // Ошибка
end;
end.
Edited by noveek
Link to comment
Short link
Share on other sites

  • Replies 20
  • Created
  • Last Reply

Top Posters In This Topic

блин, getElementsByName("Новая Тема") вернет кнопку с name="Новая Тема"

для поиска по title используйте jquery

document.getElementById ? Это и есть Jquery ?

А главное java компилятор ругается на скобки в конце .click

JavaScript error: Uncaught TypeError: document.querySelectorAll(...).click is not a function on line 2

Edited by noveek
Link to comment
Short link
Share on other sites

@noveek, getElementsByName вернет массив, поэтому бери его первый элемент, у которого будет метод click()

JSCode := 'document.getElementsByName("Новая Тема")[0].click()';

Всё равно EAccess Violation..

Вот код кнопки:

 

 

<a data-bind=" css: modificators, click: onButtonClicked, buttonWaiting: waiting, attr: {title: hint, href: link}, event: { mouseover: _.bind(onMouseOver, $component), mouseout: _.bind(onMouseOut, $component) }, style: { visibility: visible() ? '' : 'hidden' } " class="button button__inline" title="Новая Тема">
Edited by noveek
Link to comment
Short link
Share on other sites

 

@noveek, Пользуйтесь документацией..

В примере видно, что для работы getElementsByName элементы должны иметь аттрибут name.

<a name="Новая тема"></a>

Кнопку то как кликнуть в Delphi ? код кнопки указал выше сайт не мой если вы об этом !

Edited by noveek
Link to comment
Short link
Share on other sites

@noveek, Воспользуйтесь element.getAttribute("title").

Это вернёт значение аттрибута title для элемента. Конечно, нужно будет вначале перебрать все элементы, проверить есть ли у них этот аттрибут, и равен ли он "Новая Тема".

Edited by Azbuka
Link to comment
Short link
Share on other sites

 

 

$("[title=Новая тема]")

Из пушки  по воробьям. jQuery делает то же самое, но при этом ещё тратит время на инициализацию и разбор выражения.

Если можно использовать jQuery, это вовсе не значит, что её нужно использовать.

Link to comment
Short link
Share on other sites

@noveek, Я не проверял, но должно работать.

var links = document.getElementsByTagName("a"); // Только ссылки
var buttons = links.getElementsByClassName("button"); // Только ссылки с классом button
for( var counter = 0; counter <= buttons.length; counter++) {
    if(buttons[counter].getAttribute("title") == "Новая тема") // Если аттрибут title кнопки равен "Новая тема"
        buttons[counter].click(); // Кликаем
}
Link to comment
Short link
Share on other sites

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...