我写了一个小的 JS 代码,它将 src
属性 url 从 https 更改为 http。
我这样做是因为我的公司调整 SSL 流量以防止 SSTP 和 SSL 隧道到外部,这导致网页出现故障,特别是通过 https 提供的视频和流。
这是代码:
function changeSrc(){
var srclist = document.getElementsByTagName('source'); //find all source tags
for (var i = 0; i < srclist.length; i++) {
src = srclist[i].getAttribute("src"); //get current https source
newsrc = src.replace("https", "http"); //change https to http
srclist[i].setAttribute("src", newsrc); // replace src attrib. with new url
}
}
这个函数运行得很好(作为一个 tampermonkey 扩展),但问题是视频仍然通过 https 播放,即使它们的 src
被改变了。
我怀疑可能是播放器记住了第一个视频 url(https 一个)并且在更改 url 之后,它需要某种刷新或缓冲并通过新的 http url 播放?
任何帮助将不胜感激。
最佳答案
不起作用,我不认为你可以用音频/视频标签来做到这一点
没有使用 tampermonkey 的经验,但使用了多年的 greasemonkey
但是我要问,为什么要把https改成http呢?
无论如何,您可能想要做的是从 DOM 中删除包含视频/音频的元素,更改已删除片段中的源 src,然后将视频/音频片段元素重新插入到它来自的位置
我认为这可能会像我描述的那样(未测试)
function changeSrc(){
var mmlist = document.body.querySelectorAll('video,audio'); //find all video/audio tags
for (var i=0; i<mmlist.length; i++) {
var mm = mmlist[i];
var par = mm.parentElement;
var sib = mm.nextSibling;
par.removeChild(mm);
var srclist = mm.querySelectorAll('source');
for (var j = 0; j < srclist.length; j++) {
var src = srclist[j].getAttribute('src');
var newsrc = src.replace("https", "http");
srclist[j].setAttribute('src', newsrc);
}
// par.removeChild(mm); could do it here instead, maybe?
par.insertBefore(mm, sib);
}
}
老实说,你可能根本不需要删除音频/视频标签.. par.insertBefore(mm, sib) 可能就足够了
关于javascript - 即使我更改了 src 属性,视频仍然通过 https 加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31514673/