[已解决]IE textarea 操作中如何往TinyMCE编辑框中写入内容?
本帖最后由 cnergao 于 2013-2-19 11:58 编辑TinyMCE是一个轻量级的基于浏览器的所见即所得编辑器,支持目前流行的各种浏览器,由JavaScript写成。功能配置灵活简单(两行代码 就可以将编辑器嵌入网页中),支持AJAX。
关于TinyMCE的介绍请参考http://www.iwms.net/n2065c17.aspx
在初始化TinyMCE的时候,会把所有的TEXTAREA文本域在页面加载时将被转换成编辑器。
现在有两个TEXTAREA
<td class="label">产品标题</td><td class="input"><textarea class="txt" name="productdescription" style="width:200px;height:110px;"></textarea></td>
<td class="label">产品介绍</td><td class="input"><textarea id="contentform" rows="1" cols="1" style="width:580px;height:360px;" name="productcontent"></textarea>
第一个产品标题的textarea可以通过_IEFormElementGetObjByName($oForm,"productseotitle")的方法来操作写值
第二个产品介绍的textarea试了很多方法都不行。包括(_IEFormGetObjByName,_IEFormElementGetObjByName,_IETagNameGetCollection,_IEGetObjById ,_IEGetObjByName)里面有ID也有Name。就是无法写值。不知道是否因为TinyMCE初使化后变了。使用按键精灵带的浏览器分析网页元素。编辑框属性只显示“TAG”是“P"其他都没有。
请问还有什么方法可以操作没?
经过大家的帮助,现在已经找到输入的方法了。
解决方案:$oIE = _IECreate ("http://127.0.0.1/product-add.php",1,1,1,0)
WinActivate("")
$oFrames = _IEFrameGetCollection($oIE)
$oFrame = _IEFrameGetCollection($oIE, 0)
_IEPropertySet($oFrame, "innerhtml", "<p>品名:<strong>产品名称<br /></strong>造型:多样化/p>" ) 在此特别感谢:komaau3,haijie1223 本帖最后由 cnergao 于 2013-2-18 23:26 编辑
附上网页原代码供参考<div class="main_body">
<form id="sform" action="product-add.php" method="post" enctype="multipart/form-data">
<table class="inputform" cellpadding="1" cellspacing="1">
<td class="label">产品标题</td><td class="input"><textarea class="txt" name="productdescription" style="width:200px;height:110px;"></textarea></td>
<td class="label">产品介绍</td><td class="input"><textarea id="contentform" rows="1" cols="1" style="width:580px;height:360px;" name="productcontent"></textarea>
<!-- Load TinyMCE -->
<script type="text/javascript" src="tiny_mce/jquery.tinymce.js"></script>
<script type="text/javascript" src="tiny_mce/plugins/swampy_browser/sb.js"></script>
<script type="text/javascript">
$().ready(function() {
$("#contentform").tinymce({
// Location of TinyMCE script
script_url : 'tiny_mce/tiny_mce.js',
// General options
theme : "advanced",
language : "zh",
width : "580",
height : "360",
add_unload_trigger : true,
plugins : "Ybrowser,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,advlist",
// Theme options
theme_advanced_buttons1 : "undo,redo,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,formatselect,fontselect,fontsizeselect",
theme_advanced_buttons2 : "forecolor,backcolor,del,ins,|,cut,copy,paste,pastetext,pasteword,|,outdent,indent,attribs,|,link,unlink,anchor,image,Ybrowser,media,cleanup,|,preview,code,fullscreen",
theme_advanced_buttons3 : "",
theme_advanced_buttons4 : "",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
theme_advanced_resizing : false,
// Drop lists for link/image/media/template dialogs
template_external_list_url : "lists/template_list.js",
external_link_list_url : "lists/link_list.js",
external_image_list_url : "lists/image_list.js",
media_external_list_url : "lists/media_list.js"
});
var formoptions = {
beforeSubmit: function() {
$("#submitbtn").val("正在处理...");
$("#submitbtn").attr("disabled","disabled");
},
beforeSerialize: function($form, options) {
tinyMCE.triggerSave();
},
success: function (msg) {
alert(msg);
if(msg == "产品添加成功!")
$("#sform").resetForm();
$("#submitbtn").val("提交");
$("#submitbtn").attr("disabled","");
}
};
$("#sform").ajaxForm(formoptions);
$("#pubdate").datetimepicker({
showSecond: true,
timeFormat: 'hh:mm:ss',
hour:16,
minute:43,
second:26,
closeText:'完成',
currentText:'当前时间'
});
});
</script>
<!-- /TinyMCE -->
</td></tr>
</table>tinymce编辑框输入内容后分析所得源代码<BODY style="DISPLAY: block; webkitUserSelect: " dir=ltr id=tinymce class="mceContentBody " contentEditable=true spellcheck="0"><P>sfdsfdsfdssdfsd</P></BODY> 回复 3# au3脚本代写
怎么写有印象没?使用什么方法?或者那个程序源码还在吗?给我参考参考! 刚在国外的官方论坛转了一圈。搜索tinymce。发现有不少贴子也是说这个无法输入的。看了个大概。说要做为iframes来操作。看E文太累。无法看懂。有没有高手可以讲解一下! $oIE = _IECreate ("http://127.0.0.1/product-add.php",1,1,1,0")
WinActivate("")
$oForm =_IEGetObjById ($oIE, "sform")
;MsgBox(0,"",$oForm)
$oText = _IEFormElementGetObjByName($oForm,"productname")
$oRadio = _IEFormElementGetObjByName($oForm,"productcategory")
$oTitle=_IEFormElementGetObjByName($oForm,"productseotitle")
$oKeywords=_IEFormElementGetObjByName($oForm,"productkeywords")
$oDescription=_IEFormElementGetObjByName($oForm,"productdescription")
$oContent=_IEFormElementGetObjByName($oForm,"productcontent");这个就是tinymce的编辑器。怎么都无法写入
$oClick=_IEGetObjById($oie,"submitbtn")
_IEFormElementSetValue ($oText, $oExcel.cells($Y,2).value)
_IEFormElementSetValue($oRadio,$oExcel.cells($Y,3).value)
_IEFormElementSetValue($oTitle,$oExcel.cells($Y,5).value)
_IEFormElementSetValue($oKeywords,$oExcel.cells($Y,6).value)
_IEFormElementSetValue($oDescription,$oExcel.cells($Y,7).value)
_IEFormElementSetValue($oContent,"proutding")
_IEAction($oClick,"click")
_IELoadWait ($oIE)
Sleep(1500)
ControlSend("windows", "fishing", "Button1","{ENTER}")
Sleep(500)
我试了很多方法。_IEFormElementGetObjByName ,_IEFormGetObjByName,_IEGetObjById,_IEGetObjByName,_IETagNameGetCollection
都不行 本帖最后由 netegg 于 2013-2-18 23:27 编辑
见到过,不过有个疑问,怎么解析autoit,毕竟都是脚本类,好像和麻烦,如果加载引擎的话不如直接用原始的了
另外,你说的那个操作似乎不是很麻烦 回复 7# netegg
这个tinymce输入内容后有的ID=tinymce。
这个在源代码中也有
<script type="text/javascript">
$().ready(function() {
$("#contentform").tinymce({
// Location of TinyMCE script
直接用原始的怎么操作? 本帖最后由 cnergao 于 2013-2-18 23:32 编辑
现在的问题就是操作不到这个tinymce 。不知道这个要怎么引用过来进行操作。我各种语言并不是很懂。都是对照着例子看了又看的。昨晚在国外论坛看了很久。又跑到tinymce论坛上看了。还是不得其解。操作不了这个编辑器 回复 1# cnergao
正常元素操作就可以啊 没发现什么异常 可能你是用表单操作有些不当把
#include <IE.au3>
Global $oIE = _IEAttach("产品", "Text")
$o1 = _IEGetObjByName($oIE, "productdescription")
$o1.innertext = "1111111111";innertext和value都可以,浏览器手动输入观察 应该使用innertext属性比较合适
$o2 = _IEGetObjByName($oIE, "productcontent")
$o2.innertext = "2222222222";同上
#include <IE.au3>
Global $oIE = _IEAttach("产品", "Text")
$oTexts = _IETagNameGetCollection($oIE, "textarea")
For $oText In $oTexts
;MsgBox(0, "Form Text Type", "name: " & $oText.name & " id: " & $oText.id & " class: " & $oText.classname)
If $oText.name == "productdescription" Then $oText.innertext = "111111111"
If $oText.name == "productcontent" Then $oText.innertext = "22222222"
Next 本帖最后由 komaau3 于 2013-2-19 02:08 编辑
回复 1# cnergao
卡了。。。 本帖最后由 komaau3 于 2013-2-19 02:06 编辑
回复 1# cnergao
卡了。。。 komaau3 已经给你回复了,问题应该解决了吧。
参考这个帖子:http://www.autoitx.com/forum.php?mod=viewthread&tid=37210&extra=page%3D1%26amp%3Bfilter%3Dtype%26amp%3Btypeid%3D31 回复 10# komaau3
你这两种方法我之前也试过了。是可以写的。但是出现的位置不是在tinymce编辑器里。不可视。查询“productcontent.innertext"也是查得到的。1楼的截图看到没?最上面的“裤子裤子”是用_IEDocInsertHTML($oContent1,"裤子","afterend")输入的。位置在整个编辑器最上部。等于是在编辑器的外面了。 请教一下,为什么使用WinActivate(""),与_IELoadWait有什么区别?谢谢! 本帖最后由 cnergao 于 2013-2-21 12:48 编辑
回复 15# archangle
$oIE = _IECreate ("http://127.0.0.1/product-add.php",1,1,1,0)
“在返回之前等待网页加载完毕”已经有_IELoadwait的效果。
WinActivate 激活指定的窗口(设置焦点到该窗口,使其成为活动窗口).
不需要激活也没关系。可以后台操作的。只是测试中为了方便观看!
页:
[1]
2