当innerHTML遇到flash壳

本文探讨了在不同浏览器中嵌入Flash时遇到的问题及解决方案。包括调整Flash壳代码以兼容IE和Firefox,并解决了调用页面JS导致Firefox崩溃的问题。
今天在整嵌入flash的页面,遇到两个问题,记录下来以备忘

1)将flash壳代码赋给innerHTML的问题
代码段1) 写了一段js代码,返回一个flash壳
functiongetShell(vname,vpath)...{
varstr="<objectwidth='147'height='121'>";
str
+="<paramname='movie'value='http://xx.com/xplayer.swf?v="
str
+=vname;
str
+="&p=";
str
+=vpath;
str
+="&autoplay=0'></param>";
str
+="<embedsrc='http://xx.com/xplayer.swf?v="
str
+=vname;
str
+="&p=";
str
+=vpath;
str
+="&autoplay=0'type='application/x-shockwave-flash'width='147'height='121'></embed>";
str
+="</object>";

returnstr;
}
接着
代码段2)

。。。。
xx.innerHTML
=getShell(vname,vpath);
。。。。

这2段代码在firefox下是好的,ie就莫名其妙了,于是将代码段1改成如下,就两个浏览器都好了
functiongetShell(vname,vpath)...{
varstr="<embedsrc='http://txx.com/xplayer.swf?v="
str
+=vname;
str
+="&p=";
str
+=vpath;
str
+="&autoplay=0'type='application/x-shockwave-flash'width='147'height='121'></embed>";

returnstr;
}

即只留下embed部分

2) flash处理完毕调用本页面的js的问题

js中含有如下代码
。。。。
$(
"windowdiv").innerHTML="waiting....."
。。。。

$("windowdiv")原本含有flash壳代码,这段代码在ie下好的,在firefox下就会让firefox爆掉
屏蔽掉就好了,或者使用setTimeOut延时调用也ok
### innerHTML 属性详解 #### 定义 `innerHTML` 是一个属性,允许获取或设置指定元素的内容作为 HTML 或 XML。当读取 `innerHTML` 时,它会返回该元素内部的所有子节点的 HTML 字符串表示形式;当写入 `innerHTML` 时,则会替换掉现有的内容并解析新的 HTML 文本[^2]。 #### 使用方式 要访问某个 DOM 节点下的所有 HTML 内容,可以像下面这样操作: ```javascript // 获取 id 为 'example' 的元素中的 HTML 内容 var content = document.getElementById('example').innerHTML; console.log(content); ``` 如果想要修改某一部分页面结构或者向现有内容追加新内容,也可以这样做: ```javascript // 修改 id 为 'example' 的元素内的全部 HTML 结构 document.getElementById('example').innerHTML = '<p>这是更新后的新段落。</p>'; ``` 需要注意的是,在某些情况下,比如 `<span>` 元素被设置了 CSS 样式 `display: none;`,即使这些隐藏起来的标签里有文字,也不会影响到 `innerText` 返回的结果,但这不影响 `innerHTML` 对整个 HTML 片段的操作能力。 #### 安全性考虑 由于 `innerHTML` 可能会被用来注入恶意脚本代码(即 XSS 攻击),所以在处理来自用户的输入数据之前一定要做好转义工作。建议遵循以下几点来保障安全性: - 不直接将未经验证的数据插入至网页中; - 如果确实需要动态加载外部资源,请确保来源可靠,并采用合适的编码措施防止潜在威胁; - 尽量减少不必要的使用频率,优先选用更安全的方法如创建文本节点 (`createTextNode`) 来代替简单的字符串拼接赋值给 `innerHTML`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值