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>
根据其查看方式,有时 p
和 br
标签会出现在不同的行上,但其他方面都是相同的。
直接在网页的文本字段中手动输入文本(“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 库,它允许丰富的编辑功能。
根据评论,您要查找的特定字段名为 fax_text
。这是源代码,它在 textarea
标签中,请注意使用哪个函数 TagName
与 Name
...
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
我对 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>
根据其查看方式,有时 p
和 br
标签会出现在不同的行上,但其他方面都是相同的。
直接在网页的文本字段中手动输入文本(“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 库,它允许丰富的编辑功能。
根据评论,您要查找的特定字段名为 fax_text
。这是源代码,它在 textarea
标签中,请注意使用哪个函数 TagName
与 Name
...
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