как загрузить файл js и выполнить его на CEF

Я использую CEF (Chromium ebedded Framework) для загрузки html-страницы:

<!DOCTYPE html>
<html>
    <head>
    </head>
    <body>
        <script src="phantom-limb.js" type="text/javascript"></script>
    </body>
</html>

и это работает нормально. теперь я изменяю страницу следующим образом:

<!DOCTYPE html>
<html>
    <head>
    </head>
    <body>
    </body>
</html>

и после того, как cef загрузил его, я использую метод cef ExecuteJavaScript для выполнения того же phantom-limb.js, но ничего не появляется.

как я могу загрузить файл js и выполнить, или у файла js есть какой-то предел?

спасибо:)


person Monday Woo    schedule 22.03.2015    source источник
comment
Два вопроса: как вы определяете, что страница загружена? Что вы передаете ExecuteJavaScript?   -  person Sga    schedule 22.03.2015
comment
1) может просматривать источник. 2)mf.ExecuteJavaScript(sl.Text, mf.url, 0);(delphi)   -  person Monday Woo    schedule 22.03.2015
comment
Я имел в виду, что внутри sl.Text   -  person Sga    schedule 22.03.2015
comment
(дельфи): sl := tStringList.create; sl.LoadFromFile('phantom-limb.js'); mf.ExecuteJavaScript(sl.Text, mf.url, 0); сл.Свободный;   -  person Monday Woo    schedule 22.03.2015
comment
Возможно ли, что код внутри JS-файла запускается при создании/загрузке DOM? В этом случае это событие произошло до выполнения JS.   -  person Sga    schedule 22.03.2015
comment
JS находится по адресу github.com/brian-c/phantom-limb. не знаю много о javascript, вы можете помочь?   -  person Monday Woo    schedule 22.03.2015


Ответы (1)


Как видно в конце исходного кода вашего JS-файла параметр конфигурации startOnLoad по умолчанию имеет значение true.

Таким образом добавляется прослушиватель DOMContentLoaded, который никогда не вызывается, потому что ваша страница уже загружена.

Итак, вам просто нужно добавить строку start(); к исходному коду, затем вызвать ExecuteJavaScript, и он будет работать даже после загрузки страницы.

person Sga    schedule 22.03.2015