大家好,我是昨天发了一篇IE插件求助的帖子的。http://community.csdn.net/Expert/topic/4722/4722532.xml?temp=.1637689
那个帖子已经结了。
今天我们leader讨论后,估计短期内自己是做不出来了,就打算把这个IE插件外包出去。这里再简单的说一下内容。
   是一个少儿教育网站的一个IE插件。网站我们已经做的差不多了,但是这个插件搞不定。客户要求是,家长安装了这个IE的插件之后,可以设置不健康单词和替换单词,
   1,小孩访问某个网页的时候,插件自动检查网页的内容中有没有设置过的不健康的单词,有的话,就替换成替换用的单词,然后修改后的内容显示给小孩。比如,设置“裸体”替换成“健康”,那么网页中所有的“裸体”会被替换成“健康”,然后修改后的网页显示给小孩。
  2,要求UNICODE版,目前只考虑支持汉语和英语,以后可能考虑日语和韩语等,所以请考虑国际化的编码问题。
  3,要求支持IE5 - IE6的最新版,IE7目前先不考虑,当然,如果能做成通用的更好。
  4, 以后会考虑其它的浏览器的版本,比如firefox,不过目前只是做IE的。
  5,在用户在这个网站注册之后,下载安装这个插件的时候,生成一个唯一的id 植入这个插件中。当用户访问这个教育网站的时候,插件可以把这个ID的值放入request的head中,比如uid =<id的值>,然后网站的jsp中,用getHead(uid)就可以得到这个id的值了。
  6,插件的界面中有一个上传不健康单词的按钮,家长按了之后,可以上传这个家长设置过的不健康单词到这个教育网站的一个接口,以便网站收集。
  7,如果有感兴趣的大侠,请给我们来信,信中请送上简单的demo功能。不需要提供任何输入界面,也不需要提供任何source,可以固定一组替换单词,比如"不健康"-〉“有益”,只要我们装上IE后,自己做一个含有“不健康”字眼的网页,然后显示后确实替换成了“有益”,就可以开始合作。
  8,酬劳的支付方式是合作开始50%,最后用户确认后,付剩下的50%。用户确认过程中可能有些许修改,请谅解。
  9,完成之后,source和版权全部属于这个客户,想必这个也没什么问题吧。
  10,插件的交付时间-〉5月15日。5月16日我们交给客户确认,确认至5月20日。
  11,酬劳,可能是大家最关心的;). 1000-1500,这个是集合了这几天的几位高人的建议之后决定的。当然,质量和速度也是我们看重的,价格可以再商量,不过不会高很多的哦。
  大致就这么多要求了,估计时间快来不及了,哎。联系方式:[email protected]
  期盼大侠您的帮助。多谢多谢。祝大家五一快乐

解决方案 »

  1.   

    有个网页
    http://www.vckbase.com/document/viewdoc/?id=1446
    看看大家有没有启发?
    那么具体开多少合适呢?请高手大胆开价,不要说晦涩的话嘛。大家说心里价位好了
      

  2.   

    int MarkupSvc::RemoveNReplace(
        MSHTML::IHTMLDocument2Ptr pDoc2,
        _bstr_t bstrinputfrom, _bstr_t bstrinputto)
    {
        HRESULT              hr = S_OK;
        //IHTMLDocument2 *   pDoc2;
        IMarkupServices  *   pMS;
        IMarkupContainer *   pMarkup;
        IMarkupPointer   *   pPtr1, * pPtr2;
        TCHAR            *   pstrFrom = _T( bstrinputfrom );
        TCHAR            *   pstrTo = _T( bstrinputto );
        
        pDoc2->QueryInterface( IID_IMarkupContainer, (void **) & pMarkup );
        pDoc2->QueryInterface( IID_IMarkupServices, (void **) & pMS );    // need two pointers for ing
        pMS->CreateMarkupPointer( & pPtr1 );
        // beginning and ending position of text.
        pMS->CreateMarkupPointer( & pPtr2 );     //
        // Set gravity of this pointer so that when the replacement text
        // is inserted it will float to be after it.
        //
        pPtr1->SetGravity( POINTER_GRAVITY_Right ); // Right gravity set    //
        // Start the search at the beginning of the primary container
        //    pPtr1->MoveToContainer( pMarkup, TRUE );    for ( ; ; )
        {
            hr = pPtr1->FindText( (unsigned short *) pstrFrom, 0, pPtr2, NULL );        if (hr == S_FALSE) // did not find the text
                break;        // found it, removing..
            pMS->Remove( pPtr1, pPtr2 );
            
            //inserting new text
            pMS->InsertText( (unsigned short *) pstrTo, -1, pPtr1 );
        }
    if (hr == S_FALSE) return FALSE;
    else return(TRUE);
    }
      

  3.   

    多谢大家的帮忙,这个插件已经找到北京的一个朋友帮忙了,帖子就关闭了。
    多谢jiangsheng(蒋晟.Net[MVP]) 
    以后有问题还请多多帮忙。