UIWebView -stringByEvaluatingJavaScriptFromString:在 iFrame 内容中填充文本框?

Posted

技术标签:

【中文标题】UIWebView -stringByEvaluatingJavaScriptFromString:在 iFrame 内容中填充文本框?【英文标题】:UIWebView -stringByEvaluatingJavaScriptFromString: fill textbox in iFrame content? 【发布时间】:2012-03-22 17:32:00 【问题描述】:

我不是 javascript 大师,我遇到了麻烦,所以我不确定是我做错了还是我的意图是不可能的。

在我的网页中,我有一个 iFramed 聊天框。聊天框有 3 个文本字段,一个用于用户名,一个用于电子邮件地址,一个用于消息。您可以在此处查看并检查其内容: http://appsylvania.com/Chatroom.html

我想使用 javaScript 调用自动填充用户名(“nme”)和电子邮件(“eml”)文本字段。我已经像这样在页面本身中插入了一个函数:

function fillFields(name,email) 
    var nameText = document.getElementsByName("nme");
    nameText.value = name;
    var emailText = document.getElementsByName("eml");
    emailText.value = email;

那么,这不应该有效吗?

//in UIWebView didFinishLoad delegate method
[webView stringByEvaluatingJavaScriptFromString:@"fillFields('justin','my@mail.com');"];

它似乎没有做任何事情。我的猜测是它不起作用,因为我做错了,或者 javascript 不适用于 iFrame 内容。

感谢您的帮助。

【问题讨论】:

根据这个问题***.com/questions/1088544/…,您似乎无法从另一个域访问 iFrame 内容,这被归类为跨站点脚本,并且是不允许的。 【参考方案1】:

您是否尝试通过 iFrame 访问?

var ifrm = document.getElementById('cboxmain5-697468');
var nameText = ifrm.getElementsByName("nme");

【讨论】:

不,我没有,因为老实说,除了一些在线教程之外,我不熟悉 javascript =)。会再试一次 好的,没用,但我改变了一些东西。聊天框有 2 个 iFrame,第二个 iFrame 用于保存文本框,它被称为“cboxform5-697468”。所以我改变了我的剧本来反映这一点。我希望有一种更简单的方法来调试它。 用于调试 Chrome 在 View>Developer 中有开发者工具和 javascript 控制台。对于 firefox,您可以下载 Firebug。然后您可以轻松浏览元素和变量 console.log(variables)。

以上是关于UIWebView -stringByEvaluatingJavaScriptFromString:在 iFrame 内容中填充文本框?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UIWebView 上显示覆盖而不阻止用户与 UIWebView 的交互

UIWebview 删除填充/边距

在 xib 上更改小部件的类? (将 UIWebView 更改为我自己的 UIWebView 类别)

UIWebView 正在请求位置权限

iOS小技能:UIWebView 被拒的解决方案(用更安全的WKWebView替代UIWebView)

在 UITableViewCell 中加载 UIWebView 并根据 UIWebview 的内容制作 UITabViewCell 的高度