我有javascript文件,位于一个域上,例如: http://mydomain.com/script.js
某些页面(来自其他网域)包含使用SCRIPT标记的javascript。他们可以通过http或https
包含它<script src="http://mydomain.com/script.js"></script>
or
<script src="https://mydomain.com/script.js"></script>
他们也可以使用3rdparty iframe包含我的脚本,例如:
<iframe src="http://3rdparty.com/frame.php">
其中http://3rdparty.com/frame.php输出
<script src="http://mydomain.com/script.js"></script>
or
<script src="https://mydomain.com/script.js"></script>
我只能在mydomain.com上编辑静态javascript文件script.js.
如何检测用于加载javascript的协议(https://mydomain.com/script.js或http://mydomain.com/script.js)?
答案 0 :(得分:19)
<script src="//mydomain.com/script.js"></script>
答案 1 :(得分:4)
您可以使用:
document.location.protocol + "//mydomain.com/script.js"
答案 2 :(得分:1)
我不相信您有能力在代码中识别它是如何加载的。我能提出的最佳建议是将http和https指向不同的位置(即不同的站点),并在代码中包含指示哪一个被拾取的内容。
var protocol ='http'
或
var protocol ='https'
它确实意味着维护两个文件和两个站点。
ETA:我认为James Wiseman有答案,但当然这只会返回PAGE的协议,而不是SCRIPT。如果你知道这些是相关的,那就行了(通常https加载在https页面和vv上)。但它不是确定的。
如果你能确信hte页面上的协议与脚本上的协议相同,那么这是一个很好的解决方案。