Javascript 填写网站上的格式化文本字段

Javascript to fill a formatted text field on a web site

我对 Javascript 几乎一无所知。通过 monkey-see, monkey-do 方法,我成功地使用 AppleScript/Safari 中的 Javascript 来使用以下命令填充网站上的文本字段:

do JavaScript "document.getElementById('ElementID').value ='TextToEnter';" in document 1

除了一个字段,我已经能够在所有字段中输入文本。有效的字段标记为 input type="text”。不起作用的字段很复杂,因为输入的文本可以在输入后进行格式化(粗体、斜体、下划线、对齐等)。假设我已经确定了该元素的正确源代码,它在任何文本条目之前看起来如下所示:

<body id="tinymce" class="mce-content-body " onload="window.parent.tinymce.get('fax_text').fire('load');" contenteditable="true" spellcheck="false"><p><br data-mce-bogus="1"></p></body>

根据其查看方式,有时 pbr 标签会出现在不同的行上,但其他方面都是相同的。

直接在网页的文本字段中手动输入文本(“INSERT TEXT HERE”)后,源代码变为:

<body id="tinymce" class="mce-content-body " onload="window.parent.tinymce.get('fax_text').fire('load');" contenteditable="true" spellcheck="false"><p>INSERT TEXT HERE</p></body>

以下无效(包装在 Applescript 中):

document.getElementById('tinymce').value ='INSERT TEXT HERE';

它产生错误:"missing value"。

根据@WhiteHat,以下 n= 0-4 在页面上的多个位置插入文本,但不在目标文本字段中; n > 4 导致 "missing value" 错误:

document.getElementsByTagName('p')[n].innerHTML ='Insert text here';

我尝试定位 br 标签,但无济于事。如何使用 Javascript 定位此文本字段?注意:我不需要格式化输入的文本。

您需要访问 <p> 元素,它就在文档的 body 之后,因此...

document.getElementsByTagName('P')[0].innerHTML = 'your text'

getElementsByTagName 函数 returns 一个包含您提供的标签名称的所有元素的数组,在本例中为 P。您正在寻找第一个,因此 [0].

innerHTML 属性 将允许您设置 <p> 元素的内容。

以下是很好的JavaScript参考...

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference

以下参考适用于网页或文档对象模型 (DOM)。

https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model

并且 tinymce 是第 3 方 JavaScript 库,它允许丰富的编辑功能。

http://www.tinymce.com/

根据评论,您要查找的特定字段名为 fax_text。这是源代码,它在 textarea 标签中,请注意使用哪个函数 TagNameName...

document.getElementsByName('fax_text')[0].value = 'This is my text!';
document.getElementsByTagName('textarea')[0].value = 
  document.getElementsByName('fax_text')[0].value +
  '\nThis is additional text...';
<textarea rows="5" name="fax_text" cols="36" class="mytext"></textarea>

此文本字段位于 iFrame 中。 此 iFrame 包含一个 HTML 文档 (<html><head><body>).

要获取此文档,您需要 the_iFrame.contentDocument.

do JavaScript "var ifr = document.getElementById('fax_text_ifr'); ifr.contentDocument.getElementsByTagName('p')[0].innerHTML = 'some text';" in document 1