从外部地址栏运行Javascript

时间:2010-08-23 08:19:59

标签: javascript delphi

我正在使用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()

2 个答案:

答案 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客户端模拟此请求。