【发布时间】:2012-02-10 17:53:11
【问题描述】:
我正在使用来自 jQuery 工具的 Overlay 插件:http://flowplayer.org/tools/overlay/index.html 在单击链接时显示完整大小的图像,但覆盖会立即显示并显示图像加载。 我想更改此行为并等到图像加载完毕后再启动叠加层。 Overlay 插件有一个 onBeforeLoad 属性,可以附加一个回调函数。但是,当然,一旦执行此回调,覆盖显示就会恢复,并且不会等待图像加载事件被触发。
该插件有一些 API 方法,但它们似乎对我的目的没有多大帮助。 在下面的示例中,我注释掉的两行应该让您了解我认为可能有效但无效的内容。
这是一个简化的测试用例:http://jsfiddle.net/GlauberRocha/9jkU5/
有什么想法吗?
var $trigger = $("#trigger"),
api;
$trigger.overlay({
fixed: true,
mask: {
color: "#000",
opacity: .8
},
onBeforeLoad: function() {
console.log("onBeforeLoad");
api = $trigger.data("overlay"); // see http://flowplayer.org/tools/overlay/index.html "Scripting API"
//api.close(); // Temporarily "close" the overlay?
setTimeout(function() { // This will be replaced by the image load event
console.log("Waiting is over!");
//api.load(); // Load the overlay now?
}, 2000);
},
onLoad: function() {
console.log("onLoad");
}
});
【问题讨论】:
-
你能再解释一下吗?你是什么意思它显示图像加载?查看您的 jsfiddle 似乎覆盖工作正常。
-
对不起,如果我的解释不清楚。是的,覆盖效果很好,但我不想在图像加载完成之前显示它。在我的测试中,
setTimeout只是模拟了image.onload事件:我需要暂停执行覆盖,并在触发此事件时恢复。
标签: javascript jquery overlay jquery-tools