我正在使用Delphi编写桌面应用程序。到目前为止,我一直在使用TWebBrowser组件1)完全加载页面2)然后向其发送Javascript (Webbrowser.Navigate('javascript: join_game()')
但我真的不喜欢这样,因为我必须等待TWebBrowser完全加载页面。我不会用它做任何其他事情。例程如下所示:
repeat begin
SourceCode:=HTTPGetText(PAGE_URL);
// now parse the code and depending on the result either call js: join_game() or js: leave_game()
end;
每当调用其中任何一个函数时,服务器就会添加或删除我,就像当前登录(自动保存在cookie中)进出大厅一样。
我要问的是,是否可以在不加载页面的情况下调用JS脚本,例如将其写入地址栏:http://www.pagewithjs.com/javascript:function()
答案 0 :(得分:0)
如果您的功能足够小,那么您只需将其放入网址即可。例如,假设您具有以下功能:
function foo(text) {
var a = text.split(/\W+/g);
return a.length;
}
你要这样称呼它:foo('hello world')
,然后你可以把它写到地址栏:
javascript:(function(text){var a=text.split(/\W+/g);return a.length;})('hello world')
请注意,您还应该在函数体周围加上括号:(function(){})
,这会使它被视为函数指针。
另请注意,不同的浏览器对URL的长度有不同的限制。如果我没记错,那么IE的最低限度是2048个字符。
HTH。
答案 1 :(得分:0)
Javascript代码位于HTML页面中(或HTML中引用的脚本文件中),因此必须在执行代码之前加载页面。
标准HTML协议未提供向URL添加“脚本调用参数”的方法。
只有当脚本只是向服务器发送HTTP请求时,才有可能从HTML客户端模拟此请求。