在应用程序模式下运行的chrome浏览器中使用标记

时间:2014-02-07 17:08:39

标签: javascript perl google-chrome

我正在使用命令(来自批处理文件)

启动Chrome浏览器窗口

c:\ path \ to \ chrome.exe --application http://w.x.y.z/message 这是http://w.x.y.z/message

的代码
<html>
<head>
<title>My Message Window</title>
</head>
<body onunload=window.open("http://w.x.y.z/cgi-bin/test.pl"), _blank>
<a href=http://w.x.y.z/cgi-bin/test.pl>My Long Test Meesage, Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit</a>
</body>
</html>

我的test.pl如下:

#!/usr/bin/perl
open(OUTFILE, ">>/message/log/accesslog.txt");
print OUTFILE scalar localtime ();

此网址会显示一条消息。我的愿望是,当用户点击文本或故意关闭窗口时,我希望此操作调用cgi-bin perl脚本,并且此脚本将当前日期和时间写入(追加)到预定义文件中。

为了点击URL,可以很容易地将整个消息作为链接,并将其与我的perl脚本的URL绑定。

对于窗口关闭的情况,我希望onUnload函数生效并调用一个新的(甚至相同的)窗口并在其中运行我的perl脚本。

我在普通的Chrome浏览器中测试了onUnlad函数并且它可以工作。但是从chrome中加载的相同url作为应用程序框架开始,它完全被忽略了。

为什么会这样,并且有人知道如何使其无法运行并将浏览器作为常规镀铬窗口启动,而不是使用--application switch。

1 个答案:

答案 0 :(得分:1)

这是问题(来自the Mozilla documentation):

  

配备弹出窗口阻止程序的浏览器将忽略onunload事件处理函数中的所有window.open()方法调用。

因此,window.open()无法实现您的目标。

尝试使用AJAX。因为您只是想写入文件,所以您只需传递信息,而不是打开新窗口。 AJAX会为此做好。