Javascript 静态html页面中的协议相关链接
如今,使用//server.tld/js/script.js而不是特定于协议的http://server.tld/js/script.js 在脚本标签等 但是我想提供一个没有任何Web服务器的静态html页面,即没有http://localhost:8080. 问题是浏览器将协议相对链接解释为file:///js/script.js 我无法回避这个问题,因为它是从外部服务器动态加载的 在这种特定情况下,脚本是http://connect.soundcloud.com/sdk.jsand 在运行时加载//connect.soundcloud.com/soundmanager2/soundmanager2.js。 包括指向http://connect.soundcloud.com/soundmanager2/soundmanager2.js 直接在html页面中并不能解决问题,因为还有一些其他依赖项 也没有办法让Web服务器运行,例如php-S localhost:8080,因为它是为不希望安装任何东西的客户机运行的 那么,如何在html文件中定义procotol相对链接应该使用http://或https://作为协议,而不是file:// 编辑:也许我可以用一个例子来解释 在我的html页面中,我有一个脚本标记,可以在其中控制使用的协议Javascript 静态html页面中的协议相关链接,javascript,html,protocols,Javascript,Html,Protocols,如今,使用//server.tld/js/script.js而不是特定于协议的http://server.tld/js/script.js 在脚本标签等 但是我想提供一个没有任何Web服务器的静态html页面,即没有http://localhost:8080. 问题是浏览器将协议相对链接解释为file:///js/script.js 我无法回避这个问题,因为它是从外部服务器动态加载的 在这种特定情况下,脚本是http://connect.soundcloud.com/sdk.jsand 在运行时
<script src='http://example.org/some.js'></script>
脚本在dom中添加了另一个标记
<script src='//example.org/helper.js'></script>
如果我打开html文件file:///.../file.html 浏览器认为它应该在file://前面加上前缀,因此脚本src变为file://example.org/helper.js 或类似的
而且不可能只循环遍历脚本标记并预先添加http://,因为脚本http://example.org/some.js 可能会使用ajax
编辑:
如果第三方脚本使用协议相关URL,我认为没有办法为它们设置协议,因此我将这个问题留给那些在使用第三方脚本和静态html页面时可能遇到相同行为的人作为提醒。
如果在Windows中像在Linux的Python中一样预装一个Web服务器就好了。它是什么系统?大多数操作系统都附带一个HTTP服务器系统和另一个HTTP服务器系统,php-S不是唯一的方法。顺便说一句,您总是可以手动完成它。@BenjaminGruenbaum它是Windows,所以甚至连Python的SimpleHTTPServer都没有安装。客户端无法执行Web服务器。但似乎Web服务器是唯一的选择。或者。。。您可以使用JavaScript更改URL。您可以检测当前协议并进行相应调整。查看google analytics跟踪代码-它就是这么做的。我无法控制使用的URL http或文件,因为它们都是第三方soundcloud.com。他们应该检测当前的协议并进行调整,但他们使用的是相对路径,这对我来说是完全可以理解的。所以我认为没有办法改变这种行为,即使是base标签也没有帮助。所以我把这个问题留作文档来说明这个限制。有什么原因不能运行IIS吗?