精华内容
下载资源
问答
  • ThinkPHP + jquery easyui 1.4.1 做的一个登录页面,在chrome、FF等浏览器上是正常的,但是在IE兼容模式下,一提交Form就变成了下载文件了。 页面代码: BlueSky后台管理系统

    ThinkPHP + jquery easyui 1.4.1  做的一个登录页面,在chrome、FF等浏览器上是正常的,但是在IE兼容模式下,一提交Form就变成了下载文件了。


    页面代码:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>BlueSky后台管理系统</title>
        <load href='__PUBLIC__/jquery-easyui-1.4.1/themes/default/easyui.css' />
        <load href='__PUBLIC__/jquery-easyui-1.4.1/themes/icon.css' />
        <load href='__PUBLIC__/jquery-easyui-1.4.1/jquery.min.js' />
        <load href='__PUBLIC__/jquery-easyui-1.4.1/jquery.easyui.min.js' />
        <load href='__PUBLIC__/jquery-easyui-1.4.1/locale/easyui-lang-zh_CN.js' />
    </head>
    <body>
    <div class="easyui-dialog" title="登录" data-options="iconCls:'icon-tip',closable: false" style="width:420px;height:200px;padding:10px;">
        <div style="padding:10px 60px 20px 60px;">
            <form id="ff" class="easyui-form" method="post" data-options="novalidate:true" action="__APP__/Admin/Index/login">
                <table cellpadding="5">
                    <tr>
                        <td>用户名:</td>
                        <td><input class="easyui-textbox" type="text" name="name" data-options="required:true,prompt:'手机/邮箱/呢称'" ></input></td>
                    </tr>
                    <tr>
                        <td>密码:</td>
                        <td><input class="easyui-textbox" type="password" name="password" data-options="required:true"></input></td>
                    </tr>
                </table>
            </form>
            <div style="text-align:center;padding:5px">
                <a href="javascript:void(0)" class="easyui-linkbutton" οnclick="submitForm()">登录</a>
                <a href="javascript:void(0)" class="easyui-linkbutton" οnclick="clearForm()">清空</a>
            </div>
        </div>
    </div>
    <script>
        function submitForm(){
            $('#ff').form('submit',{
                onSubmit:function(){
                    return $(this).form('enableValidation').form('validate');
                },
                success:function(data){
                    var d = $.parseJSON(data);
                    if(d.state==1){
                        window.location= d.url;
                    }else{
                        $.messager.alert('提示:', d.msg,'error');
                    }
                }
            });
        }
        function clearForm(){
            $('#ff').form('clear');
        }
        //回车提交表单
        $.parser.onComplete = function(){
            $(".textbox-text").keyup(function (e) {
                if (e.keyCode == 13) {
                    submitForm();
                }
            });
        };
    </script>
    </body>
    </html>


    PHP Controller:

    <?php
    namespace Admin\Controller;
    use Admin\Model\UserModel;
    use Think\Controller;
    class IndexController extends Controller {
        /*
         * 登录
         */
        public function login(){
            $user = M("user");
            $where["nickname"] = ":name";
            $where["email"] = ":name";
            $where["mobile"] = ":name";
            $where["_logic"] = "OR";
            $map["password"] = ":password";
            $map['_complex'] = $where;
            $bind[':name'] = I("post.name");
            $bind[':password'] = I("post.password");
            $list = $user->where($map)->bind($bind)->select();
            if(count($list) == 1){
                $currentUser = current($list);
                $currentUser["lasttime"] = date('Y-m-d H:i:s',time());
                session("user",$currentUser);
                //保存最后登录时间
                $user->field('lasttime,id')->save($currentUser);
    
                $data["state"] = 1;
                $data["url"] = U("Admin/Index/main");
                $this->ajaxReturn($data);
            }else{
                $data["state"] = 0;
                $data["msg"] = "用户名或密码不正确!";
                $this->ajaxReturn($data);
            }
        }
    }
    IE兼容模式点登录就变成下载文件了。


    引起问题的原因应该是 easyui 1.4.1 不再支持IE6、7、8所致,经测试,解决问题的方法,是不用 ajaxReturn 方法返回数据,因为ajaxReturn 会在返回数据前添加 header 声明,我们直接用 echo或exit 之类的方法直接输出字符串就好了。

    PHP Controller 修改如下:

    <?php
    namespace Admin\Controller;
    use Admin\Model\UserModel;
    use Think\Controller;
    class IndexController extends Controller {    
        /*
         * 登录
         */
        public function login(){
            $user = M("user");
            $where["nickname"] = ":name";
            $where["email"] = ":name";
            $where["mobile"] = ":name";
            $where["_logic"] = "OR";
            $map["password"] = ":password";
            $map['_complex'] = $where;
            $bind[':name'] = I("post.name");
            $bind[':password'] = I("post.password");
            $list = $user->where($map)->bind($bind)->select();
            if(count($list) == 1){
                $currentUser = current($list);
                $currentUser["lasttime"] = date('Y-m-d H:i:s',time());
                session("user",$currentUser);
                //保存最后登录时间
                $user->field('lasttime,id')->save($currentUser);
    
                $data["state"] = 1;
                $data["url"] = U("Admin/Index/main");
                exit(json_encode($data));
            }else{
                $data["state"] = 0;
                $data["msg"] = "用户名或密码不正确!";
                exit(json_encode($data));
            }
        }
    
    }


    展开全文
  • 女朋友要毕业了,数学专业,给她装了word2010,噼噼啪啪把论文敲完了,转换为2003模式后,发现一些公式完全变样了,跟我大吵一架,严重质疑我技术差。 唉,更改公式所在行为单倍行距即可

    女朋友要毕业了,数学专业,给她装了word2010,噼噼啪啪把论文敲完了,转换为2003模式后,发现一些公式完全变样了,跟我大吵一架,严重质疑我技术差。

    唉,更改公式所在行为单倍行距即可



    展开全文
  • word 文档自动保存失败,未能保存你最近所做的更改,请另存为其他文件 编写文档时遇到这个问题,当时是批改模式,百度一圈也没有解决,直到看到一个论坛中有人说,可能是某个公式不兼容,检查之后果然是,调整公式,...

    word 文档自动保存失败,未能保存你最近所做的更改,请另存为其他文件

    编写文档时遇到这个问题,当时是批改模式,百度一圈也没有解决,直到看到一个论坛中有人说,可能是某个公式不兼容,检查之后果然是,调整公式,接受插入后,问题解决。

    展开全文
  • IE 7有好几个新的API可以被扩展插件用来完成保护模式下限制的功能。这些API都在ieframe.dll中。你可以通过使用iepmapi.lib这个库来直接使用这些API,也可以在运行的时候使用LoadLibrary()/GetProcAddress()来...

    IE 7有好几个新的API可以被扩展插件用来完成保护模式下限制的功能。这些API都在ieframe.dll中。你可以通过使用iepmapi.lib这个库来直接使用这些API,也可以在运行的时候使用LoadLibrary()/GetProcAddress()来得到这些函数的指针。如果你想让你的插件加载到Vista以前的Windows版本上,第二种方法是你必须使用的选择。

       执行提升权限操作的许多功能使用到了一个代理进程(broker process),ieuser.exe。由于IE进程运行在低完整性等级下,它不能靠自己来完成更高权限的任务;ieuser.exe担任了这个角色。你会经常在本文中和微软的文档中看到提到的这个代理进程。
    1.运行时检测保护模式

       为了判断我们的插件是否运行在一个保护模式IE进程中,我们使用IEISProtectedModeProcess():

    HRESULT IEIsProtectedModeProcess(BOOL* pbResult);
    
     
    

       如果返回值是一个成功的HRESULR和*pbResult是True,那么保护模式就被启用了。根据在*pbResult中返回的值,你可以在你的代码中采取不同的操作:

    HRESULT hr; 
    BOOL bProtectedMode = FALSE;

    hr = IEIsProtectedModeProcess ( &bProtectedMode );

    if ( SUCCEEDED(hr) && bProtectedMode )
    // IE is running in protected mode
    else
    // IE isn't running in protected mode

       示例band插件在一启动的时候调用了这个API,并显示了关于保护模式状态的一个消息。

    2.写文件系统

       当保护模式被启用的时候,扩展插件只能对用户配置下的几个目录进行写操作。只有在Temp、Temporary、Internet Files、Cookies和Favorites目录下的几个特定低完整性目录可以进行写操作。IE还有某些兼容性补偿功能,它虚拟化其他常用目录。对这些目录的写操作将被重定向到Temporary Internet Files的子目录中。如果一个扩展插件试图对一个敏感进行写操作的话,例如对windows目录,这个操作将会失败。

       当一个扩展插件希望写这个文件系统的时候,它应该使用IEGetWriteableFolderPath()这个API,而不是GetSpecialFolderPath()、GetFolderPath()或SHGetKnownFolderPath()。IEGetWriteableFolderPath()可以发现保护模式,如果一个插件请求一个不允许写的目录,IEGetWriteableFolderPath()将返回E_ACCESSDENIED。IEGetWriteableFolderPath()的原型如下:

    HRESULT IEGetWriteableFolderPath(GUID clsidFolderID, LPWSTR* lppwstrPath);
    
     
     其中GUID是其中之一,在knownfolders.h: FOLDERID_InternetCache, FOLDERID_Cookies, FOLDERID_History中定义。对于Temp目录来说似乎没有一个GUID,因此当你需要写临时文件的时候,我推荐使用FOLDERID_InternetCache。 

       以下是在缓存中创建一个临时文件的代码片段:
    HRESULT hr; 
    LPWSTR pwszCacheDir = NULL;
    TCHAR szTempFile[MAX_PATH] = {0};

    hr = IEGetWriteableFolderPath(FOLDERID_InternetCache, &pwszCacheDir);

    if ( SUCCEEDED(hr) )
    {
    GetTempFileName(CW2CT(pwszCacheDir), _T("bob"), 0, szTempFile);
    CoTaskMemFree(pwszCacheDir);

    // szTempFile now has the full path to the temp file.
    }
       如果IEGetWriteableFolderPath() 成功的话,它将分配一个缓冲器,并在pwszCacheDir中返回它的地址。我们把那个目录传输给GetTempFileName(),然后使用CoTaskMemFree()释放这个缓冲器。

       IEGetWriteableFolderPath() 不仅仅可以用来写临时文件。当一个插件使用保护模式版的文件保存对话框的时候,也会用到它,这一点我们将在下面的《提示用户保存文件》部分解释。在这个演示项目中,当你点击了Save Log按钮后,使用这个API。

    3.写注册表

       因为注册表是系统的关键部分,所以有一点很重要,运行在浏览器中的代码不允许来修改注册表的任何可能导致运行恶意软件的部分。为了实现这个目的,只有一个键值是扩展插件可以写的。对于文件系统来说,这个键值在当前用户的文件下的一个专门的低权限区域中。要想得到这个键值的句柄,可以调用IEGetWriteableHKCU():

    HRESULT IEGetWriteableHKCU(HKEY* phKey);
    
      
    
       如果它成功的话,你可以在其他的注册表API中使用返回的HKEY来写任何需要的数据。本演示项目没有使用这个注册表,但是这割API是非常简单的,在使用它的时候应该不会什么麻烦。

    4.提示用户保存文件

       当IE运行在保护模式的时候,还有一个方式让插件来间接的写低权限区域之外的文件系统。插件可以通过调用IEShowSaveFileDialog()来显示一个常见的保存文件对话框。如果用户输入一个文件名,这个插件然后能够通过调用IESaveFile()来让IE写这个文件。注意这个操作总会让用户看到这个保存文件对话框;这样可以确保用户知道一个文件将被写到计算机上。

       保存一个文件的步骤如下:

      (1)调用IEShowSaveFileDialog() 来显示保存文件对话框。
      (2)调用IEGetWriteableFolderPath() 来得到IE缓存目录。
      (3)写数据到缓冲目录中的一个临时文件中。
      (4)调用IESaveFile()来拷贝数据到用户选择的文件名中。
      (5)清空temp文件。

       IEShowSaveFileDialog()是对普通的文件保存对话框的封装:

    HRESULT IEShowSaveFileDialog( 
    HWND hwnd,
    LPCWSTR lpwstrInitialFileName,
    LPCWSTR lpwstrInitialDir,
    LPCWSTR lpwstrFilter,
    LPCWSTR lpwstrDefExt,
    DWORD dwFilterIndex,
    DWORD dwFlags,
    LPWSTR* lppwstrDestinationFilePath,
    HANDLE* phState
    );
       hwnd是一个插件拥有的窗口,IE将使用它作为对话框的父窗口。lppwstrDestinationFilePath是一个指向代表用户选择的文件路径的LPWSTR的指针。它仅仅是一个数据信息,因为这个扩展插件不能直接写到这个路径。

       如果用户选择了一个文件名,IEShowSaveFileDialog()返回S_OK,如果他取消了对话框则返回S_FALSE,或者如果这个API失败的话返回一个失败的HRESULT。

    以下是在保存日志到文件的演示项目中的代码。我们首先调用IEShowSaveFileDialog()来提示用户选择文件路径:

    void CBandDialog::OnSaveLog(UINT uCode, int nID, HWND hwndCtrl) 
    {
    HRESULT hr;
    HANDLE hState;
    LPWSTR pwszSelectedFilename = NULL;
    const DWORD dwSaveFlags =
    OFN_ENABLESIZING | OFN_HIDEREADONLY | OFN_PATHMUSTEXIST |
    OFN_OVERWRITEPROMPT;

    // Get a filename from the user.
    hr = IEShowSaveFileDialog (
    m_hWnd, L"Saved log.txt", NULL,
    L"Text files|*.txt|All files|*.*|",
    L"txt", 1, dwSaveFlags, &pwszSelectedFilename,
    &hState );

    if ( S_OK != hr )
    return;

       接下来,我们使用IEGetWriteableFolderPath()来获得缓冲区目录的位置。

    LPWSTR pwszCacheDir = NULL; 
    TCHAR szTempFile[MAX_PATH] = {0};

    // Get the path to the IE cache dir, which is a dir that we're allowed
    // to write to in protected mode.
    hr = IEGetWriteableFolderPath ( FOLDERID_InternetCache, &pwszCacheDir );

    if ( SUCCEEDED(hr) )
    {
    // Get a temp file name in that dir.
    GetTempFileName ( CW2CT(pwszCacheDir), _T("bob"), 0, szTempFile );
    CoTaskMemFree ( pwszCacheDir );

    // Write our data to that temp file.
    hr = WriteLogFile ( szTempFile );
    }

        如果一起都顺利的话,我们调用另一个保护模式API,IESaveFile()。IESaveFile()获得IEShowSaveFileDialog()返回的状态句柄,以及我们的临时文件的路径。注意这个HANDLE不是一个标准的句柄,不需要被关闭;在IESaveFile()调用完后,这个HANDLE会被自动释放。

       由于某些原因,我们没有结束调用IESaveFile(),举个例子来说,如果当写临时文件的时候出现一个错误,我们需要清除这个HANDLE和任何IEShowSaveFileDialog()分配的任何内部数据。我们通过调用IECancelSaveFile()来实现:

    if ( SUCCEEDED(hr) ) 
    {
    // If we wrote the file successfully, have IE save that data to
    // the path that the user chose.
    hr = IESaveFile ( hState, T2CW(szTempFile) );

    // Clean up our temp file.
    DeleteFile ( szTempFile );
    }
    else
    {
    // We couldn't complete the save operation, so cancel it.
    IECancelSaveFile ( hState );
    }
    展开全文
  • Vista下的程序运行权限比较严格,如题,想在安装程序安装完成直接把exe的兼容性设为“以管理员权限运行此程序”,可是不知道对应的应该调用什么api? 是用inno setup制作的安装程序。  注: 本贴不用讨论资源...
  • 原理上是可以的。 1 360基于Chromium 开源浏览器内核,它本身就是一个壳子。。 2 7.0之后的极速浏览器,不支持 它官方的那个声明标记。&lt;meta name=”renderer” content=”webkit|ie-comp|ie-stand” /&...
  • 像友盟这样的第三方开发工具只能分享文字、图片、和链接类型,并不支持分享文件,所有,分享文件类型还是需要android原生的开发组件
  • 公司让做一个excel文件提交保存的功能 在chrome浏览器中,测试完全没问题,但是到了ie11上就点击按钮没反应了,下面把修改的地方标识出来,现在完全解决了 @ResponseBody @RequestMapping(value = "/upload...
  • log4j2的异步模式也使用了此队列,故最近把古老的log4j1.x升级到了log4j2。之前用log4j1.x时,配置了本地、测试、线上三套环境,在代码里用静态代码块动态修改log4j.properties的路径,如下: //静态初始化块 ...
  • 2、进入属性,选择兼容性,检查以兼容模式支行的程序,检查以下管理员身份支行的程序。再点击更改所有用户的设置。 3、进入所有用户的兼容性,检查兼容模式分行的程序,检查以下作为管理员的分行的程序。点击...
  • 设置IE文档模式解决IE浏览器兼容

    千次阅读 2018-06-20 14:17:39
    IE的兼容性一直是前端开发者最头疼的问题之一,很多时候为了解决莫名其妙的兼容性脑细胞那叫一个大片大片的死亡啊,经常是Chrome、Firefox等浏览器正常,但偏偏IE要出现问题,有些时候可能高版本的IE也正常,但有...
  • 解决VMWare中 二进制转换与此平台上的长模式兼容,此虚拟环境中的长模式将被禁用 问题
  • Hostbuddy for Mac激活版是一款host文件修改管理工具。每次更改host文件太麻烦?无需担心,Hostbuddy可以修改hosts文件中的指定内容,然后保存,一切就是这么简单。并且可以事先设定多个hosts文件,方便我们快速切换...
  • INF文件详解(32位64位兼容INF)

    万次阅读 2013-08-30 15:55:07
    INF文件格式要求 一个INF文件是以段组织的简单的文本文件。一些段油系统定义(System-Defined)的名称,而另一些段由INF文件的编写者命名。每个段包含特定的条目和命名,这些...端点顺序可以是任意的,大多数的INF文件
  • “软件虚拟化与此平台上的长模式兼容. 禁用长模式. 没有长模式支持, 虚拟机将不能运行 64位程序.”和“中断导致虚拟 CPU 进入关机状态. 如果中断发生在虚拟机外部, 其会造成物理机重启. “经过2个小时的...
  • 应项目需求要把PDF内嵌到网页中显示,其中有了很多办法,比如用元素放入PDF文件,但是效果不理想,浏览器兼容不理想,在ie9/8(其他版本没有测试)显示会提示下载pdf文件。当然这不是我想要的效果,这种做法可以轻易...
  • 解决VMWare中“二进制转换与此平台上的长模式兼容,此虚拟环境中的长模式将被禁用”问题  【转自】http://blog.sina.com.cn/s/blog_63b15fc901019wkn.html 在使用Windows7 64位操作系统时,...
  • 它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。 vim的这些优势主要体现在以下几个方面: 1、多级撤消 我们知道在vi里,按 u只能撤消上次命令,而在vim里...
  • “软件虚拟化与此平台上的长模式兼容. 禁用长模式. 没有长模式支持, 虚拟机将不能运行 64位程序.”和“中断导致虚拟 CPU 进入关机状态. 如果中断发生在虚拟机外部, 其会造成物理机重启. “经过2个小时的...
  • 在Android7.0之前,如果你想调用系统相机拍照可以通过以下代码来进行: File file=new File(Environment.getExternalStorageDirectory(), &quot;/temp/&quot;+System.currentTimeMillis() + &quot;....
  • 出现问题:vmware“二进制转换与此平台长模式兼容.....”的问题。 问题原因:一般是由于硬件系统Virtualization Technology虚拟化技术功能关闭导致。 解决办法:(不同型号电脑进入BIOS的方法不同,...
  • JAVA设计模式--适配器模式

    万次阅读 2016-08-28 20:42:19
    适配器(Adapter)模式又叫做包装( Wrapper )模式,是由GOF提出的23种设计模式中的一种结构型设计模式,Adapter模式的设计意图:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作.....
  • 虚拟机VMWare“提示:软件虚拟化与此平台上的长模式兼容”不少童鞋反映,在使用Windows7 64位操作系统时,无法运行VMWare或MS Virtual server等软件虚拟操作系统。提示为“提示:软件虚拟化与此平台上的长模式不...
  • 附带的缓存图片查看器升级到1.5版本,可以按网址或访问时间排序,可以保存非图片类文件。 38)9.7可以对IE多选项卡同时取图,支持世界之窗3.0 39)9.7.8支持TT4.6.1,傲游2.5.2,360浏览器3.0 40)9.8.2支持取图存盘,...
  • 你一定听过“网络适配器”吧?又叫网卡。它的作用是什么呢?——上网! 这样的回答显然不够专业,正确的答案是“网卡的一个重要功能就是要...当然有了,因为你正在学习设计模式,而这就跟本文即将要介绍的适配器...
  • Windows延缓写入失败:Windows无法为某盘某文件保存所有数据,数据已经丢失。这个错误可能是由于您的计算机硬件或网络连接的失败导致的。 提示“Windows-延缓写入失败”,一般都是由于硬盘坏道故障引起的。可以挂...
  • 在使用Windows7 64位操作系统时,无法运行VMWare或MS ...提示为“提示:软件虚拟化与此平台上的长模式兼容. 禁用长模式. 没有长模式支持, 虚拟机将不能运行 64 位程序. ”产生这个错误的主要原因是现在平常用的VMW
  • 在七零八落的前一篇文章《仙剑奇侠传5使用虚拟机无限制运行...提示为“提示:软件虚拟化与此平台上的长模式兼容. 禁用长模式. 没有长模式支持, 虚拟机将不能运行 64 位程序. ”产生这个错误的主要原因是现在平常
  • 设计模式23模式介绍

    万次阅读 多人点赞 2020-01-18 08:20:52
    一、什么是设计模式 设计模式是一套被反复使用、多数人知晓...项目中合理的运用设计模式可以完美的解决很多问题,每种模式都有响应的原理与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 132,319
精华内容 52,927
关键字:

兼容模式的文件修改后可以保存吗