我为 Flash 嵌入了以下简单对象:
<object id="siwp_obj"
type="application/x-shockwave-flash"
data="button.swf?file=%2F/ex.php?id=89804c7326e92a00c5c88c181190af8159cf060b"
height="32" width="32">
<param id="siwp_param" name="movie"
value="button.swf?file=%2F/ex.php?id=89804c7326e92a00c5c88c181190af8159cf060b" />
</object>
我想要做的是用id
浏览器生成的新 ID 替换参数。
我试过这个,它适用于 Firefox,但不适用于 Chrome 或 IE9。Firefox 成功更新了参数,因此 Flash 对象引用了新 ID,但 Chrome 和 IE9 不更新 ID,或者导致任何脚本错误或警告。
var cid = "randomstring";
var obj = document.getElementById('siwp_obj');
// get the "data" attribute which contains the URL with an old id to replace
obj.setAttribute('data', obj.getAttribute('data').replace(/[a-zA-Z0-9]{40}$/, cid));
obj = document.getElementById('siwp_param');
obj.value = obj.value.replace(/[a-zA-Z0-9]{40}$/, cid);
我试图假设没有可用的 javascript 库,因为这将在插件系统中使用。
有没有人对如何动态更新对象和参数标签的 URL 有任何想法?
编辑:
在 Chrome 中,我做了一些调试,注意到参数正在更新,但是当我与 flash 交互时,它并没有重新加载。
例如:
var obj = document.getElementById('siwp_obj');
alert(obj.getAttribute('data')); // the old URL with old ID
obj.setAttribute('data', obj.getAttribute('data').replace(/[a-zA-Z0-9]{40}$/, cid));
alert(obj.getAttribute('data')); // the new URL with new ID
...但是当我单击 flash 对象以尝试从新 URL 流式传输时,它仍然引用具有旧 ID 的旧 URL。因此 DOM 正在更新,但浏览器随后丢失了对象的某些参数已更改的事实。有什么想法吗?