我有一个问题,我试图以多种不同的方式解决这个问题,但我完全被难以接受,而且我找不到的任何东西都可以帮助......
问题
我正在编写Chrome扩展程序,以便在通过AJAX提交之前修改网页上某些输入元素的值。使用Knockout模型创建元素,该模型是基于初始AJAX请求的响应构建的。问题是,每当我的Chrome内容脚本更新UIAlertController *alertController = [UIAlertController
alertControllerWithTitle:alertTitle
message:alertMessage
preferredStyle:UIAlertControllerStyleAlert];
[self presentViewController:alertController animated:YES completion:nil];
元素的值时,Knockout observable都不会更新(并且最终的POST请求使用序列化的Knockout对象,这些对象没有更改)。
我见过的几种解决方案也提出了建议,
input
事件 - 我所以非常希望这会起作用。但是,它似乎什么都不做。我今天玩了几个小时后的理解是,这个事件也被隔离到了沙箱(但我可能是错的)。我能看到的唯一可能的解决方案(这很难看)是阻止POST并直接修改请求的内容。但是当我可以修改DOM中的表单时,这似乎很愚蠢......
有什么想法吗?我真的可以使用一些帮助。
答案 0 :(得分:1)
由于this的回答,我想通了。我不知道我可以将JavaScript注入页面;所以,我将change
事件触发器注入到DOM中,这导致它在页面范围内而不是在我的内容脚本范围内被调用。
var script = document.createElement('script');
script.textContent = "$(\'.myInputField\').eq(" + i + ").change()";
(document.head || document.documentElement).appendChild(script);
script.parentNode.removeChild(script);