代码之家  ›  专栏  ›  技术社区  ›  Martin Melka

从地址栏外部运行Javascript

  •  0
  • Martin Melka  · 技术社区  · 15 年前

    我正在用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;
    

    我想问的是,有没有可能在不加载页面的情况下调用JS脚本,比如将以下内容写入地址栏: http://www.pagewithjs.com/javascript:function()

    2 回复  |  直到 15 年前
        1
  •  0
  •   mjn anonym    15 年前

    Javascript代码位于HTML页面(或HTML中引用的脚本文件)中,因此有必要在执行代码之前加载页面。

    标准HTML协议不提供向URL添加“脚本调用参数”的方法。

    只有当脚本简单地向服务器发送一个HTTP请求时,才有可能从HTML客户机模拟这个请求。

        2
  •  0
  •   Roy Sharon    15 年前

    如果你的函数足够小,那么你可以简单地把它放在URL里面。例如,假设您具有以下功能:

    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个字符。

    嗯。