我创建了一个API.AI聊天机器人并使用了#34; web demo"将它集成到我的html文件中。我的意思是API.AI给了我一个嵌入式iframe,如下所示:
<iframe id="ifrm" width="350" height="430" src="https://console.api.ai/api-client/demo/embedded/...."></iframe>
我在HTML文件中使用它。
现在我想获取上面<input>
内的<iframe>
标记文字。
<input type="text" name="q" id="query" placeholder="Ask something...">
我尝试了不同的方法来获取此<input>
文字。例如:
$('#ifrm').contents().find("#query")
但结果是"undefined"
。
有人知道我应该怎么做才能在我的HTML文件中包含此输入标记的文本吗?
提前致谢
答案 0 :(得分:0)
如果iframe和您的网页不在同一个域下,则您的网络浏览器不会允许您进入iframe。但是,如果两者属于同一个域,则可以尝试类似以下内容:
var iframe = document.getElementById("your_iframe_id");
var iframe_contents = iframe.contentDocument.body.innerHTML;
var textbox = iframe_contents.getElementById("input_id");
首先,您获取对iframe的引用。 iframe有一个名为contentDocument
的属性,它是一个包含所有html数据的document。你可以从那里获取你的输入。
如果iframe和尝试互动的网页不属于同一个域,则浏览器不允许您进行互动。这是出于安全原因。考虑如果我可以在我的网页中嵌入任何网页以使它看起来相同,那么它会有多大的问题,然后只需插入一些代码来监控按键等。
定义从Javascript访问内容的所有规则的规则集称为same-origin policy。