gpt4 book ai didi

javascript - JsApi 有时会损坏

转载 作者:行者123 更新时间:2023-12-03 12:16:42 27 4
gpt4 key购买 nike

我们使用 JsApin 在插件和页面 js 之间进行双向通信。有时这个对象会停止工作。

这就是我们正在做的事情:

<object type="...">
...
<param name="onload" value="pluginloaded" />
...
</object>

var myObj = {
element: ..., // reference to the dom element for the object tag
...
}

function pluginloaded(jsapi) {
myObj.jsapi = jsapi;
}

正如您所看到的,我们保留了对 DOM 对象元素和传递给 onload 方法的 JsApi 对象的引用。
当尝试在插件(或属性)上执行方法时,它将首先尝试 myObj.jsapi.method() ,如果失败,则尝试 'myObj.element.method()`,并且如果失败,则会报告。

统计数据显示,这种情况发生的频率并不高,但确实发生过,虽然我不知道如何重现它,只是有时会发生。

知道什么可能导致该对象不可用吗?从 js Angular 来看,jsapi 对象是未定义的,并且对象元素只是没有从插件公开的方法/属性。

谢谢。

最佳答案

如果不花更多时间查看您的实际项目,很难确定,但这对我来说听起来就像您实际上正在卸载和/或重新加载您的插件。导致此问题的最常见原因是当您在 DOM 中移动它时——例如,如果您使用 javascript 创建对象标记,并在将其放入 DOM 之前设置 .type:

var obj = Document.create("object");
obj.type = "application/x-mytype";

someElement.appendChild(obj);

这似乎是个好主意,但当您执行此操作时,浏览器实际上会部分销毁插件对象。同样,如果您在插件对象或其任何父对象上设置 css display: noneoverflow: {anything here} ,则可能会导致这种情况。

无论如何,不​​管怎样,我打赌你正在卸载插件,从而使你获取的 jsapi 对象失效。

关于javascript - JsApi 有时会损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24658217/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com