我正在撰写一个基于网络的游戏,其中包括点击互联网上各个网站上的链接。我知道这听起来很奇怪,但基本前提是你从我的页面开始,你点击链接到另一个网站上的某个页面。您继续关注链接,直至转到您要覆盖的页面。想想WikipediaGame.org。不同之处在于我无法通过链接控制实际页面。
我需要做的是跟踪他们点击的所有链接,当他们到达最终页面时,我想将它们发送回我的网站(或者沿着这些线路)。
我在想的是,也许我可以以某种方式拦截页面请求并注入一些Javascript来跟踪他们点击的链接。这可能吗?有人做过这样的事吗?显然,这可能会带来安全风险。我还有其他选择吗?我想避免让用户收集所有链接的列表,然后将它们发布到我网站上的文本框中。
答案 0 :(得分:1)
也许是将当前页面发送到您网站的书签?这样,用户就可以完全控制以最少的工作量共享的链接列表。
答案 1 :(得分:0)
为了使这种跨浏览器兼容 - 我不确定是否有办法不为每个浏览器编写插件。但是,我也错了: - )
您可以尝试制作书签(当用户点击某个书签时运行的Javascript),但这不会在用户加载的每个页面上自动运行;用户必须单击它才能运行它。
如果您只想支持Firefox,可以编写一个可在每个页面/站点上运行的Greasmonkey脚本。但是,这会限制用户的范围。
答案 2 :(得分:0)
单独使用javascript无法做到这一点。您需要编写firefox插件或GM脚本。
答案 3 :(得分:0)
我不确定你能否像你想象的那样实现这一目标。如果不编写浏览器插件,我会看看像KeepVid这样的网站正在做什么。他们让您在工具栏上创建书签,书签网址为:
的javascript:document.location = 'http://keepvid.com/?url=' +逸出(window.location的);
这实际上是将用户目前使用的url传递给keepvid。如果您使用此概念,您可以让您的用户单击书签按钮向您注册该URL,您可以收集该URL并将用户传回原来的位置。
答案 4 :(得分:0)
所以我想出了该怎么做。我正在使用这样的iframe:
<iframe src="Puzzle/ContinuePuzzle" />
它将源指向我的Mvc控制器。在我的控制器中,我为我想要的实际网址执行WebRequest,然后解析Html并在页面中粘贴我自己的javascript。该页面的行为与其他网站相似,但它实际上来自我的网站。
答案 5 :(得分:-1)
我不知道你如何将JavaScript注入其他人的页面,然后会向你发送消息。这听起来像病毒会做的事情。
我认为你可以使用iframe完成你想要的东西 一种简单的方法是包含iframe预设以加载您网站上的“开始”位置,然后在外部页面上包含一个按钮,供用户回发其当前位置(在iframe中)。
当按下页面上的按钮时,您可以查询iframe的当前状态...
可以使用name属性通过frames数组获取iframe生成的窗口和加载到iframe中的文档的引用。
window.frames[iframeName] <br/>
window.frames[iframeName].document <br/>
只要您将名称属性附加到iframe,帧数组引用方法即使在相当旧的浏览器中也具有广泛的支持。为获得最佳效果,请同时使用name和id。
对于更多最新的浏览器,iframe中的文档也可以通过iframe元素的contentWindow(IE win)和contentDocument(DOM)属性引用:
// IE5.5+ windows
document.getElementById(iframeId).contentWindow
document.getElementById(iframeId).contentWindow.document
or,
// DOM
document.getElementById(iframeId).contentDocument
编辑:正如下面的评论所示,看起来大多数浏览器都会阻止您以这种方式使用iframe。您可以在任何需要的位置启动窗口,但如果它不在同一个域中,则不允许与之通信。我猜你可以建立一个“中间人”的场景,你可以先通过你的服务器流过所有的交通工具,但这不是很实用。
以下是控制iframe的jQuery的一个很好的例子
http://wwwendt.de/tech/dynatree/doc/sample-iframe.html
希望有所帮助。