这是我的代码:
var i;
var pic = document.getElementById('image');
var picSrc = pic.src;
var fullSrc = picSrc.split('h.jpg')[0] + '.jpg';
pic.src = fullSrc;
document.getElementById('next').onmousedown = function () {
i = 0;
// it works up to here
pic.addEventListener("DOMAttrModified", function(event) {
if (i == 0 && event.attrName == "src") {
pic = document.getElementById('image');
i = 1; // this is to prevent endless loop
picSrc = pic.src;
fullSrc = picSrc.split('h.jpg')[0] + '.jpg';
pic.src = fullSrc;
}
});
return true;
};
它应该适用于imgur的水平布局相册,并用全分辨率的图像替换低分辨率图像,一次替换一个图像(当前显示的图像)。 单击“下一步”按钮,将显示一个新图像。但是,脚本不会加载下一个完整分辨率图像。它仅适用于第一个加载的图像。
答案 0 :(得分:0)
你正在搞乱你的范围,在第一次运行后使整个代码无效。这也应该在控制台中弹出足够多的错误。重新分配到正确位置的任务:
document.getElementById('next').onmousedown = function () {
var i;
var pic = document.getElementById('image');
var picSrc = pic.src;
var fullSrc = picSrc.split('h.jpg')[0] + '.jpg';
pic.src = fullSrc;
pic.addEventListener("DOMAttrModified", function(event) {
if (i == 0 && event.attrName == "src") {
pic = document.getElementById('image');
i = 1; // this is to prevent endless loop
picSrc = pic.src;
fullSrc = picSrc.split('h.jpg')[0] + '.jpg';
pic.src = fullSrc;
}
});
return true;
};
根据页面的具体工作方式(如果没有现实世界的用例,我看不到),您可能还需要重新分配整个mousedown事件。
答案 1 :(得分:0)
在每个mousedown
上添加一个新的DOMAttrModified
事件监听器。
尝试将代码安排到以下内容:
var pic = document.getElementById('image');
var i;
pic.addEventListener("DOMAttrModified", function(event) {
if (i == 0 && event.attrName == "src") {
//pic = document.getElementById('image');
i = 1; // this is to prevent endless loop
picSrc = pic.src;
fullSrc = picSrc.split('h.jpg')[0] + '.jpg';
pic.src = fullSrc;
i = 0;
});
document.getElementById('next').onmousedown = function () {
var picSrc = pic.src;
var fullSrc = picSrc.split('h.jpg')[0] + '.jpg';
pic.src = fullSrc;
});
您还应该尝试使用addEventListener
代替onmousedown