Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从webview启动Objective-C dom更新时收到通知_Javascript_Objective C_Dom_Webkit_Jquery Events - Fatal编程技术网

Javascript 从webview启动Objective-C dom更新时收到通知

Javascript 从webview启动Objective-C dom更新时收到通知,javascript,objective-c,dom,webkit,jquery-events,Javascript,Objective C,Dom,Webkit,Jquery Events,我通过DOMElement对象以编程方式更新WebKit webview上的DOM——对于复杂的UI,我添加的任何元素通常都有一个Javascript组件。这就需要在更新完成时得到通知——有这样的事件吗?我知道普通div不会触发onload或onready事件,对吗?我的另一个假设可能是完全错误的,domeElement更新是不同步的,因此我不能这样做,并且确信它将与DOM中的标签实际相符: DOMElement *displayNameLabel = [document createEleme

我通过
DOMElement
对象以编程方式更新WebKit webview上的DOM——对于复杂的UI,我添加的任何元素通常都有一个Javascript组件。这就需要在更新完成时得到通知——有这样的事件吗?我知道普通div不会触发
onload
onready
事件,对吗?我的另一个假设可能是完全错误的,
domeElement
更新是不同步的,因此我不能这样做,并且确信它将与DOM中的标签实际相符:

DOMElement *displayNameLabel = [document createElement:@"div"];
[displayNameLabel setAttribute:@"class" value:@"user-display-name"];
[displayNameLabel setTextContent:currentAvatar.avatarData.displayName];
[[document getElementById:@"user-card-content"] appendChild:displayNameLabel];
id win = [webView windowScriptObject];
[win evaluateWebScript:@"javascriptInstantiateLabel()"];
这是真的吗

我已经在html的主体中使用了jQuery,所以我不介意通过“live”订阅一组特定的事件类。我想我可以做一些类似的事情:

$(".some-class-to-be-added-later").live( "ready", function(){
    // Instantiate some fantastic Javascript here for .some-class
});
$("#someDiv").bind("DOMSubtreeModified", function() {
    alert("tree changed");
});
但到目前为止,我还没有体验到快乐。当元素位于DOM中时,是否有任何一方(objective-c,因为我没有通过编程方式启动Javascript post load,或Javascript)得到通知

编辑:根据Anurag的回答,以下是我提出的代码:


请注意,您需要解除对事件的绑定,因为每次后续更改都会触发另一个事件、另一个事件和另一个事件。

请参阅一小时前提出的类似问题-

要侦听元素上的更改,请使用以下命令:

$(".some-class-to-be-added-later").live( "ready", function(){
    // Instantiate some fantastic Javascript here for .some-class
});
$("#someDiv").bind("DOMSubtreeModified", function() {
    alert("tree changed");
});
我还没有通过Objective-C编写DOM脚本,所以不知道是否有办法使用Objective-C包装器订阅DOM事件


domsubtreemedited
modified事件在iPhone上起作用。刚刚测试过。

参见一小时前提出的类似问题-

要侦听元素上的更改,请使用以下命令:

$(".some-class-to-be-added-later").live( "ready", function(){
    // Instantiate some fantastic Javascript here for .some-class
});
$("#someDiv").bind("DOMSubtreeModified", function() {
    alert("tree changed");
});
我还没有通过Objective-C编写DOM脚本,所以不知道是否有办法使用Objective-C包装器订阅DOM事件


domsubtreemedited
modified事件在iPhone上起作用。刚刚测试过。

确实不错。这真是太棒了,我会试试看的。这太棒了,我来试试。