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

Javascript to fill a formatted text field on a web site

本文关键字:格式化 文本 字段 填充 网站 Javascript      更新时间:2023-09-26

我对Javascript几乎一无所知。通过猴子看,猴子做的方法,我成功地在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函数返回具有您提供的标记名称(在本例中为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是一个第三方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