【发布时间】:2017-09-20 22:56:56
【问题描述】:
我需要在 iframe 的文档中设置几个元素的 value 属性。我可以从 Chrome 工具控制台轻松地做到这一点。但是相同的命令不适用于由 Keyboard Maestro 或 AppleScript 注入页面的 JavaScript。
iframe 由 Chrome 扩展程序生成:Evernote Web Clipper。 在下面的示例中,我已经调用了 Evernote Web Clipper。
在我选择 iframe 文档后,此脚本/命令可从 Chrome 控制台运行:
var remElem = document.getElementById("comments");
remElem.value = "KM This is a test";
var titleElem = document.getElementById("title")
titleElem.value = 'KMTEST title'
我怀疑在运行上述脚本之前,我首先需要获取或选择 iframe 文档。我该怎么做?
我尝试了许多不同的 SO 解决方案,但都没有奏效。
这是 Chrome 工具中主文档的屏幕截图:
Chrome 工具中 iframe 文档的屏幕截图:
这是我尝试过的,但没有成功:
// *** NONE of These Work ***
//--- Method 1 ---
var frame = window.frames[‘frame1’];
var documentObj = frame.document;
var element = documentObj.getElementsByName(‘frame1Text’);
//--- Method 2 ---
var frame = document.getElementById(‘myframe1’);
var documentObj = frame.contentWindow.document;
var element = documentObj.getElementById(‘frame1Text’);
//--- Method 3 ---
window.frames[1].document.getElementById('someElementId')
例如,在 Chrome 工具中,当我选择了主文档时:
//--- From Chrome Tools with Main document selected ---
enFrm = document.getElementById("evernoteGlobalTools")
/*RESULTS
<iframe id="evernoteGlobalTools" src="chrome-extension://pioclpoplcdbaefihamjohnefbikjilc/content/global_tools/global_tools.html" class="evernoteClipperVisible" style="height: 528px !important;"></iframe>
*/
oDoc = enFrm.contentWindow.document;
/* ERROR
VM882:1 Uncaught DOMException: Blocked a frame with origin "http://forum.latenightsw.com" from accessing a cross-origin frame.
at <anonymous>:1:27
(anonymous) @ VM882:1
*/
oDoc = enFrm.contentWindow.document;
/* ERROR
VM892:1 Uncaught DOMException: Blocked a frame with origin "http://forum.latenightsw.com" from accessing a cross-origin frame.
at <anonymous>:1:27
*/
感谢接受任何/所有建议/想法。
【问题讨论】:
-
我的问题真的难倒所有人吗?有人有什么想法或建议吗?
-
如果浏览器允许您访问不同来源的 iframe 内容,它还必须允许黑客创建带有隐藏 iframe 的恶意站点,该站点会加载 facebook,并且您访问该站点时您的信息已被泄露。这是一个严重的安全威胁。
标签: javascript google-chrome iframe evernote