找回密码
 加入
搜索
查看: 11811|回复: 17

[IE类操作] [已解决]IE textarea 操作中如何往TinyMCE编辑框中写入内容?

  [复制链接]
发表于 2013-2-17 20:49:10 | 显示全部楼层 |阅读模式
本帖最后由 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("[CLASS:IEFrame]")

$oFrames = _IEFrameGetCollection($oIE)
$oFrame = _IEFrameGetCollection($oIE, 0)
_IEPropertySet($oFrame, "innerhtml", "<p>品名:<strong>产品名称<br /></strong>造型:多样化/p>" )
在此特别感谢:komaau3,haijie1223

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2013-2-17 20:58:43 | 显示全部楼层
本帖最后由 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>
 楼主| 发表于 2013-2-17 23:44:19 | 显示全部楼层
回复 3# au3脚本代写
怎么写有印象没?使用什么方法?或者那个程序源码还在吗?给我参考参考!
 楼主| 发表于 2013-2-18 03:25:24 | 显示全部楼层
刚在国外的官方论坛转了一圈。搜索tinymce。发现有不少贴子也是说这个无法输入的。看了个大概。说要做为iframes来操作。看E文太累。无法看懂。有没有高手可以讲解一下!
 楼主| 发表于 2013-2-18 11:37:29 | 显示全部楼层
$oIE = _IECreate ([i]"http://127.0.0.1/product-add.php",1,1,1,0")
WinActivate("[CLASS:IEFrame]")
$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")
[i]_IEAction($oClick,"click")
_IELoadWait ($oIE)
Sleep(1500)
ControlSend("windows", "fishing", "Button1","{ENTER}")
Sleep(500)
我试了很多方法。_IEFormElementGetObjByName ,_IEFormGetObjByName,_IEGetObjById,_IEGetObjByName,_IETagNameGetCollection
都不行
发表于 2013-2-18 23:23:45 | 显示全部楼层
本帖最后由 netegg 于 2013-2-18 23:27 编辑

见到过,不过有个疑问,怎么解析autoit,毕竟都是脚本类,好像和麻烦,如果加载引擎的话不如直接用原始的了
另外,你说的那个操作似乎不是很麻烦
 楼主| 发表于 2013-2-18 23:30:05 | 显示全部楼层
回复 7# netegg

这个tinymce输入内容后有的ID=tinymce。
这个在源代码中也有
<script type="text/javascript">

        $().ready(function() {

                $("#contentform").tinymce({

                        // Location of TinyMCE script

直接用原始的怎么操作?
 楼主| 发表于 2013-2-18 23:30:49 | 显示全部楼层
本帖最后由 cnergao 于 2013-2-18 23:32 编辑

现在的问题就是操作不到这个tinymce    。不知道这个要怎么引用过来进行操作。我各种语言并不是很懂。都是对照着例子看了又看的。昨晚在国外论坛看了很久。又跑到tinymce论坛上看了。还是不得其解。操作不了这个编辑器
发表于 2013-2-19 02:00:09 | 显示全部楼层
回复 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
发表于 2013-2-19 02:00:39 | 显示全部楼层
本帖最后由 komaau3 于 2013-2-19 02:08 编辑

回复 1# cnergao
卡了。。。
发表于 2013-2-19 02:01:07 | 显示全部楼层
本帖最后由 komaau3 于 2013-2-19 02:06 编辑

回复 1# cnergao
卡了。。。
发表于 2013-2-19 08:45:24 | 显示全部楼层
komaau3 已经给你回复了,问题应该解决了吧。
参考这个帖子:http://www.autoitx.com/forum.php ... 26amp%3Btypeid%3D31
 楼主| 发表于 2013-2-19 10:11:50 | 显示全部楼层
回复 10# komaau3

你这两种方法我之前也试过了。是可以写的。但是出现的位置不是在tinymce编辑器里。不可视。查询“productcontent.innertext"也是查得到的。1楼的截图看到没?最上面的“裤子裤子”是用_IEDocInsertHTML($oContent1,"裤子","afterend")输入的。位置在整个编辑器最上部。等于是在编辑器的外面了。
发表于 2013-2-21 10:24:15 | 显示全部楼层
请教一下,为什么使用WinActivate("[CLASS:IEFrame]"),与_IELoadWait有什么区别?谢谢!
 楼主| 发表于 2013-2-21 12:47:17 | 显示全部楼层
本帖最后由 cnergao 于 2013-2-21 12:48 编辑

回复 15# archangle

$oIE = _IECreate ("http://127.0.0.1/product-add.php",1,1,1,0)
“在返回之前等待网页加载完毕”已经有_IELoadwait的效果。
WinActivate 激活指定的窗口(设置焦点到该窗口,使其成为活动窗口).
不需要激活也没关系。可以后台操作的。只是测试中为了方便观看!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-20 03:09 , Processed in 0.088278 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表