无法在js弹出窗口中嵌入对象
Cannot embed object in js popup
我有这个代码:
<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0' width='800' height='470' id='Gen5Core' align='middle'><param name='allowScriptAccess' value='always'/><param name='allowFullScreen' value='true'/><param name='movie' value='http://h71016.www7.hp.com/html/interactive/_core/Gen5Core.swf?corePath=http://h71016.www7.hp.com/html/interactive/_core/&serverName=http://h71016.www7.hp.com/html/interactive/p1102w/'/><param name='quality' value='high'/><param name='bgcolor' value='#333333'/><embed src='http://h71016.www7.hp.com/html/interactive/_core/Gen5Core.swf?corePath=http://h71016.www7.hp.com/html/interactive/_core/&serverName=http://h71016.www7.hp.com/html/interactive/p1102w/' quality='high' bgcolor='#333333' width='800' height='470' name='Gen5Core' align='middle' allowScriptAccess='always' allowFullScreen='true' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer'></embed></object>
如果我直接把它放进页面,它就完美地工作了。
但我想要的是将它嵌入到弹出窗口中,所以我写了这个函数:
<script type="text/javascript">
$(document).ready(function () {
$('.newWindow').click(function (event) {
var termWin = window.open('', '', 'width=600,location=0,toolbar=0,resizable=1,height=400,menubar=0,scrollbars=1');
termWin.document.write('<html><head><title>TITLE</title><body><div> <object classid=''clsid:d27cdb6e-ae6d-11cf-96b8-444553540000'' codebase=''http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0'' width=''800'' height=''470'' id=''Gen5Core'' align=''middle''><param name=''allowScriptAccess'' value=''always''/><param name=''allowFullScreen'' value=''true''/><param name=''movie'' value=''http://h71016.www7.hp.com/html/interactive/_core/Gen5Core.swf?corePath=http://h71016.www7.hp.com/html/interactive/_core/&serverName=http://h71016.www7.hp.com/html/interactive/p1102w/''/><param name=''quality'' value=''high''/><param name=''bgcolor'' value=''#333333''/><embed src=''http://h71016.www7.hp.com/html/interactive/_core/Gen5Core.swf?corePath=http://h71016.www7.hp.com/html/interactive/_core/&serverName=http://h71016.www7.hp.com/html/interactive/p1102w/'' quality=''high'' bgcolor=''#333333'' width=''800'' height=''470'' name=''Gen5Core'' align=''middle'' allowScriptAccess=''always'' allowFullScreen=''true'' type=''application/x-shockwave-flash'' pluginspage=''http://www.macromedia.com/go/getflashplayer''></embed></object> </div></body></html>');
termWin.document.close(); termWin.focus();
});
});
</script>
当用户点击具有类别CCD_ 1的链接时。
<a href="#" class="newWindow">
<img src="@Url.Content("~/Content/Images/icon_demo_black.gif")" />
</a>
我有一个问题:
- 在Chrome中,弹出窗口为空,因此嵌入的对象不起作用(但我通过Inspect看到代码已成功放入html源代码中)
你能伸出援手吗?
Chrome在窗口准备好接受写入之前启动其余的javascript。我现在没有太多时间在所有浏览器上测试它,但它在Chrome 18和IE9上都有效http://jsfiddle.net/fordlover49/GP2Gz/
基本上,我们只需要做一个固定延迟100ms的setTimeout,让浏览器有时间准备好窗口。
请注意,最初的答案(是相同的主体)为文档的readyState添加了一个额外的检查,但不同浏览器的readySState并不一致(例如,Firefox 9在填充页面上的url或其他内容之前,窗口状态为"未初始化")。
我测试了这个,它似乎在IE8&IE9、Firefox 3.6.8&9,铬17&18
$(document).ready(function() {
var termWin;
function writeWindow() {
termWin.document.write('<html><head><title>TITLE</title><body><div> <object classid=''clsid:d27cdb6e-ae6d-11cf-96b8-444553540000'' codebase=''http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0'' width=''800'' height=''470'' id=''Gen5Core'' align=''middle''><param name=''allowScriptAccess'' value=''always''/><param name=''allowFullScreen'' value=''true''/><param name=''movie'' value=''http://h71016.www7.hp.com/html/interactive/_core/Gen5Core.swf?corePath=http://h71016.www7.hp.com/html/interactive/_core/&serverName=http://h71016.www7.hp.com/html/interactive/p1102w/''/><param name=''quality'' value=''high''/><param name=''bgcolor'' value=''#333333''/><embed src=''http://h71016.www7.hp.com/html/interactive/_core/Gen5Core.swf?corePath=http://h71016.www7.hp.com/html/interactive/_core/&serverName=http://h71016.www7.hp.com/html/interactive/p1102w/'' quality=''high'' bgcolor=''#333333'' width=''800'' height=''470'' name=''Gen5Core'' align=''middle'' allowScriptAccess=''always'' allowFullScreen=''true'' type=''application/x-shockwave-flash'' pluginspage=''http://www.macromedia.com/go/getflashplayer''></embed></object> </div></body></html>');
termWin.document.close();
termWin.focus();
}
$('.newWindow').click(function(event) {
termWin = window.open('', '', 'width=600,location=0,toolbar=0,resizable=1,height=500,width=840,menubar=0,scrollbars=1');
setTimeout(writeWindow, 100)
});
});
相关文章:
- 调整窗口大小时,可拖动的对象会出现在容器外部
- 如何在选项卡上定义属性'的主窗口对象
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- 可以从Chrome扩展修改窗口对象吗
- 在Backbone.js中为窗口对象指定变量
- 从html锚元素传递窗口对象
- 如何在ReactJS中使用窗口对象
- 在angularJS中使用模态窗口时,在控制器之间共享对象数组
- HackReactor,编码窗口现在可以访问一个名为“”的对象;招生;使用名为“;showApp”;.调用此方法时不带任
- 在加载时调用时,窗口对象的某些变量丢失
- 是否可以模拟 qUnit 测试的窗口位置对象
- 清除 Javascript 中窗口对象中的自定义变量
- 为什么当我尝试将函数绑定到自身时,“this”对象仍然引用窗口
- 窗口对象属性返回一个dom节点
- 使用窗口对象练习我的对象文字函数
- 如何从Chrome扩展访问所有窗口对象
- “this”返回的是[对象窗口],而不是元素
- 将变量打印到控制台时出现意外字符串:[对象窗口]
- 当我提醒“;这个“;鼠标悬停在<td>[对象窗口]弹出-那是什么
- javascript[对象窗口]在一个concat字符串