Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 静态html页面中的协议相关链接_Javascript_Html_Protocols - Fatal编程技术网

Javascript 静态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 在运行时

如今,使用//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页面中,我有一个脚本标记,可以在其中控制使用的协议

<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吗?