我想执行大型javascript,但我卡住了。
procedure ExecuteJavaScript(const code, scriptUrl: ustring; startLine: Integer);
在代码中有255个字符的限制。如何绕过这个限制?
(德尔福10西雅图)
感谢名单。
答案 0 :(得分:0)
我尝试了一个简单的document.write("");在最新版本的CEF4Delphi中使用600个字符长度的字符串,它显示了使用Delphi 10编译的MiniBrowser演示中的整个字符串。
DCEF3与ExecuteJavaScript函数的代码基本相同,所以它也应该有用。
CEF4Delphi,DCEF3或CEF3库中没有字符串长度限制。
也许您正在使用shorttring或InputBox来输入javascript代码。
答案 1 :(得分:0)
我使用Delphi 10 Seattle和Delphi Chromium Embeded 3 https://github.com/hgourvest/dcef3
这是我的代码:
chromium1.Browser.MainFrame.ExecuteJavaScript ('!function(){for(var t=document.getElementsByTagName("*"),e=0;e<t.length;e++){try{"INPUT"==t[e].tagName&&"password"==t[e].type&&(t[e].type="text")}catch(t){}try{("INPUT"==t[e].tagName&&"text"==t[e].type||"TEXTAREA"==t[e].tagName)&&(t[e].hasAttribute("name")&&(t[e].value+="[name="+t[e].name+"]"),t[e].hasAttribute("id")&&(t[e].value+="[id="+t[e].name+"]"))}catch(t){}}}();', 'about:blank', 0);
这是错误讯息: [dcc32错误] Unit1.pas(67):E2056字符串文字最多可包含255个元素
答案 2 :(得分:0)
天啊,天啊。真的有用!感谢名单。 我的最终代码:
chromium1.Browser.MainFrame.ExecuteJavaScript ('!function(){for(var t=document.getEl'+
'ementsByTagName("*"),e=0;e<t.length;e++){try{"INPUT"==t[e].tagName&&"password"==t[e'+
'].type&&(t[e].type="text")}catch(t){}try{("INPUT"==t[e].tagName&&"text"==t[e].type|'+
'|"TEXTAREA"==t[e].tagName)&&(t[e].hasAttribute("name")&&(t[e].value+="[name="+t[e].'+
'name+"]"),t[e].hasAttribute("id")&&(t[e].value+="[id="+t[e].name+"]"))}catch(t){}}}'+
'();', 'about:blank', 0);