今天,在-Tags 等中使用//server.tld/js/script.js
而不是特定协议是很常见的。http://server.tld/js/script.js
script
但我想提供一个没有任何网络服务器的静态 html 页面(即没有http://localhost:8080
)。
问题是浏览器将协议相关链接解释为file:///js/script.js
,我无法规避这一点,因为它是从外部服务器动态加载的。
在这种特定情况下,脚本在运行时http://connect.soundcloud.com/sdk.js
加载//connect.soundcloud.com/soundmanager2/soundmanager2.js
。
在 html 页面中包含直接script
指向的 -Taghttp://connect.soundcloud.com/soundmanager2/soundmanager2.js
并不能解决问题,因为还有一些其他依赖项。
也没有办法让网络服务器运行(例如php -S localhost:8080
),因为它是为不想安装任何东西的客户准备的。
那么如何在 html 文件中定义协议相对链接应该使用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
或类似。
并且不可能只循环遍历脚本标签并预先添加 a http://
,因为脚本 ( http://example.org/some.js
) 可能使用 ajax。
编辑:如果他们使用协议相关的 url,我认为没有办法为 3rd-party-scripts 设置协议,所以我把这个问题留给那些在使用 3rd- 时可能会遇到相同行为的人的提醒-派对脚本和静态 html 页面。
如果在 Windows 中像 Linux 的 Python 中一样预装网络服务器,那就太好了。