使用Javascript Bookmarklet在当前窗口中打开本地html文件
我正在尝试构建一个示例bookmarklet来获取当前网页的源代码并将其传递给验证器。Validator不是一个在线网站,而是一个包含大量javascript和html文件的文件夹。我正在试着打开file:///C:/Users/Electrifyings/Desktop/Validator/Main.html 在javascript bookmarklet代码的帮助下归档,并将源代码放在新打开的窗口的textarea中,但由于一些我不知道的原因,它无法工作 以下是算法示例代码:使用Javascript Bookmarklet在当前窗口中打开本地html文件,javascript,browser,bookmarklet,Javascript,Browser,Bookmarklet,我正在尝试构建一个示例bookmarklet来获取当前网页的源代码并将其传递给验证器。Validator不是一个在线网站,而是一个包含大量javascript和html文件的文件夹。我正在试着打开file:///C:/Users/Electrifyings/Desktop/Validator/Main.html 在javascript bookmarklet代码的帮助下归档,并将源代码放在新打开的窗口的textarea中,但由于一些我不知道的原因,它无法工作 以下是算法示例代码: javascr
javascript:(function(){var t = document.body.innerHTML;window.open('file:///C:/Users/RandomHero/Desktop/test.html',_self);document.getElementById("validator_textarea")=t;})()
以下是步骤:
Windows7x64,试用IE、Firefox和Chrome。所有最新和稳定的版本。我想这不是浏览器方面的问题,而是与javascript代码不使用file:///协议打开URI有关的问题。如果需要更多详细信息,请告诉我。:) 您不希望您访问的网页能够打开
文件://c:/Program Files/Quicken/YourSensitiveTaxInfo
,对吗?因为如果你犯了一个错误,访问了一个“坏”网站(要么是一个劣质网站,要么是一个被黑客入侵的好网站),intarweb上的坏人会突然访问到你的私人信息。那太糟糕了
浏览器制造商知道这一点,因此他们设置了非常严格的限制,以防止Javascript代码访问用户本地计算机上的文件。这就是阻碍你计划的原因
解决方案
- 将整个验证器构建到bookmarklet中(除非它非常小,否则不太可能工作)
- 把你的验证码放到网上某个地方
- 编写一个插件(因为用户必须选择安装插件,所以他们比网页自由得多……即使对于Firefox、Chrome等,插件基本上只是Javascript)
- 额外奖金解决方案,如果您不局限于纯客户端实现:
- 让bookmarklet向页面添加一个普通(HTML)表单李>
- 还可以向页面添加iframe(如果使用CSS样式将其隐藏,也可以)
- 将表单的target属性设置为指向iframe。这样,当用户提交表单并且服务器回复该提交时,服务器的回复将转到(隐藏的)iframe,而不是像通常那样替换页面
- 在表单中添加一个文件输入-您将无法使用Javascript访问该输入中的文件,但这没关系,因为您的服务器将进行访问,而不是您的bookmarklet
- 编写一个服务器端脚本,该脚本接受表单提交,读取随附的文件,然后将该文件作为响应复制回来。换句话说,您将拥有一个可以发布到的URL,当它在帖子的内容中看到一个文件时,它将用该文件的内容进行响应
- 现在,您已经获得了用户可以使用文件输入选择其验证器文件并将其上载到您的服务器的所有信息,您的服务器将使用刚刚获得的文件进行响应,并且该文件将显示为iframe的内容
- 现在,您终于有了一个文件,这个文件是您非常努力地获取的(在您的iframe中),您可以执行
和viola,您可以访问您的文件了。您可以保存当前页面的源代码,然后用上载的文件替换整个页面(然后将保存的页面源代码传递回新的验证程序页面),也可以对上载的验证程序文件的内容执行任何其他操作$('#thatIframe').html()
希望能有所帮助。您不希望您访问的网页能够打开
文件:/c:/Program Files/Quicken/YourSensitiveTaxInfo
对吗?因为如果你犯了一个错误,访问了一个“坏”网站(要么是一个劣质网站,要么是一个被黑客入侵的好网站),intarweb上的坏人会突然访问到你的私人信息。那太糟糕了
浏览器制造商知道这一点,因此他们设置了非常严格的限制,以防止Javascript代码访问用户本地计算机上的文件。这就是阻碍你计划的原因
解决方案
- 将整个验证器构建到bookmarklet中(除非它非常小,否则不太可能工作)
- 把你的验证码放到网上某个地方
- 编写一个插件(因为用户必须选择安装插件,所以他们比网页自由得多……即使对于Firefox、Chrome等,插件基本上只是Javascript)
- 额外奖金解决方案