首页 > 编程技术 > html

浏览器的后退按钮后表单被清空解决方法

发布时间:2016-9-20 18:58

为什么点击浏览器的后退按钮后,所有字段的信息都被清空了? 下面我们来看看解决办法。

问:为什么我在点击浏览器的后退按钮后,所有字段的信息都被清空了?

答:这是由于你在你的表单提交页面中使用了 session_start 函数。该函数会强制当前页面不被缓存。解决办法为,在你的 Session_start 函数后加入

 代码如下 复制代码
header("Cache-control: private");

注意在本行之前你的PHP程序不能有任何输出。

还有基于session的解决方法,在session_start前加上

 

 代码如下 复制代码
session_cache_limiter('nocache');// 清空表单
session_cache_limiter('private'); //不清空表单,只在session生效期间
session_cache_limiter('public'); //不清空表单,如同没使用session一般

还有一种自己用的方法,利用cookie来实现,用户输入数据时就保存到了cookie如果出错就把cookie的值返回

常用的ajax方法,这种在局部提交了自然就不需要后退一这说了。

X-UA-Compatible这种我们经常会在大站看到着问加有这么一句,开始不理解怎么回来,百度了一下结果,下面看看关于 X-UA-Compatible 兼容模式详解。

为了将这个风险降到最低,IE6允许网页开发人员选择IE编译和显示他们网页的方式。"Quirks mode"为预设,这会使页

面以旧版本浏览器的视点显示,"Standards mode"(也称为"strict mode")特点是支持业界标准最为完善。然而要利用

这个增强的支持功能,网页必须包含恰当的<!DOCTYPE>指令。

  若一个网页没有包含<!DOCTYPE>指令,IE6会将它以quirks mode显示。若网页包含有效的<!DOCTYPE>指令但浏览器

无法辨识,IE6会将它以IE6 standards mode显示。因为少数网站已经包含<!DOCTYPE>指令,兼容性模式的切换相当成

功。

认识文件兼容性模式

IE8支持几种文件兼容性模式,它们具有不同的特性并影响内容显示的方式。

?Emulate IE8 mode指示IE使用<!DOCTYPE>指令来决定如何编译内容。Standards mode指令会显示成IE8 Standards

mode而quirks mode会显示成IE5 mode。不同于IE8 mode,Emulate IE8 mode重视<!DOCTYPE>指令。
?Emulate IE7 mode指示IE使用<!DOCTYPE>指令来决定如何编译内容。Standards mode指令会显示成IE7 Standards

mode而quirks mode会显示成IE5 mode。不同于IE7 mode,Emulate IE7 mode重视<!DOCTYPE>指令。对于许多网页来说

这是最推荐的兼容性模式。
?IE5 mode 编译内容如同IE7的quirks mode之显示状况,和IE5中显示的非常类似。
?IE7 mode编译内容如同IE7的standards mode之显示状况,无论网页是否含有<!DOCTYPE>指令。

Emulate IE7 mode 兼容性之范例。

 代码如下 复制代码

<html>
<head>
  <!-- Mimic Internet Explorer 7 -->
  <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
  <title>My Web Page</title>
</head>
<body>
  <p>Content goes here.</p>
</body>
</html>

其内容随著指定的页面模式而更改,当要模拟IE7时,指定IE=EmulateIE7,指定IE=5, IE=7, 或IE=8来选择其中一种兼

容性模式。你也可以指定IE=edge来指示IE8使用它支持的最高模式。

X-UA-compatible标头没有大小写之分。然而除了title元素及其他的meta元素之外,它必须出现在网页header节其它元

素之前的位置,


其它兼容参考

 代码如下 复制代码
<meta http-equiv="X-UA-Compatible" content="IE=9">

IE8 模式支持许多既定行业标准,W3C CSS Level 2.1 规范和

W3C Selectors API,有限支持 W3C CSS Level 3 规范(草案)和其他行业标准

 代码如下 复制代码
<meta http-equiv="X-UA-Compatible" content="IE=8">

IE7 模式强制浏览器按照 IE 7 标准模式渲染文档,忽略是否

定义指令

 代码如下 复制代码
<meta http-equiv="X-UA-Compatible" content="IE=7">

Emulate IE9 模式告诉 IE 使用指令来决定如果渲染文档。标

准模式下以 IE9 渲染,怪癖模式下以 IE5 渲染。和 IE9 模式不同的是,Emulate IE9 模式会考虑指令

 代码如下 复制代码
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9">

Emulate IE8 模式告诉 IE 使用指令来决定如果渲

染文档。标准模式下以 IE8 渲染,怪癖模式下以 IE5 渲染。和 IE8 模式不同的是,Emulate IE8 模式会考虑指令

 代码如下 复制代码
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8">

Emulate IE7 模式告诉 IE 使用指令来决定如果渲

染文档。标准模式下以 IE7 渲染,怪癖模式下以 IE5 渲染。和 IE7 模式不同的是,Emulate IE7 模式会考虑指令。

对于大多数站点而言,这是首选的兼容模式

 代码如下 复制代码
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">

IE5 模式告诉 IE7 是否以怪癖模式渲染文档

 代码如下 复制代码
<meta http-equiv="X-UA-Compatible" content="IE=5">

Edge

模式告诉 IE 以最高级模式渲染文档,也就是任何 IE 版本都以当前版本所支持的最高级标准模式渲染,避免版本升级

造成的影响。简单的说,就是什么版本 IE 就用什么版本的标准模式渲染

 代码如下 复制代码
<meta http-equiv="X-UA-Compatible" content="IE=edge">

使用以下代码强制 IE 使用 Chrome Frame 渲染

 代码如下 复制代码
<meta http-equiv="X-UA-Compatible" content="chrome=1">

提示 IE 用户安装 Google Frame
Google 官方提供了对 Google Frame 插件安装情况的检测,这里直接调用方法即可,如果检测到 IE 并未安装 Google

Frame,则弹出对话框提示安装。

 代码如下 复制代码

<script" width=100% src="http://ajax.googleapis.com/ajax/libs/chrome-

frame/1/CFInstall.min.js"></script><script>CFInstall.check();</script>

最佳的兼容模式方案,结合考虑以上两

种:

 代码如下 复制代码

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

本文章收藏了关于FCKEditor XML Request Error:Internal Server Error(500)各种问题的解决办法。

原来一直能用的ecshop后台信息发布里面的fckeditor上传功能,换了个机器后不能用了。以为是文件损坏,上传一边不行。
什么xml错误,还弹出一个大的JavaScript alert警告框,内容就是服务器端错误的500内容
网上搜,又说是配置问题,主题问题,想想都不应该,直接请求

 代码如下 复制代码

filemanager/connectors/php/connector.php

出了服务器的500错误,html文件能访问,txt也行。
后来从根目录开始查,发现到fckeditor目录里面的php文件开始不能访问。

改了fckeditor目录的属性为755,问题解决。


问题二

网上很多人提到,后来发布的FCKeditor2.3以后的版本,要设置fckeditoreditorfilemanagerconnectorsaspx目录下的connector.aspx,和upload.aspx里的加入theme="",但经本人测试,这样还是不行,仔细看提示的错误,原来根本没有那么复杂,其实就是你的上传文件夹设置不对,首先要确认你的文件夹有写入的权限,然后再web.config里面要注意写入路径的设置,~/表示当前站点的根目录,/表现的文件所在电脑的根目录,建议根据你的文件结构,选择第一种设置。


原来是主题惹的祸:

因为ASP.NET2.0新增了Theme功能,所以如果在你的工程中你对Web.config使用到了styleSheetTheme或theme的话那就要再多修改一下。
还是到FCKeditor所在的目录,分别打开editorfilemanageruploadaspxupload.aspx和editorfilemanagerbrowserdefaultconnectorsaspxconnector.aspx两个aspx文件,在page标签中添加Theme=”"或StyleSheetTheme=”"看你在工程使用的是什么就修改什么。修改后如下:

 

 代码如下 复制代码
<%@ Page language="c#" Inherits="FredCK.FCKeditorV2.Uploader" AutoEventWireup="false" Theme="" %>

 代码如下 复制代码

<%@ Page language="c#" Inherits="FredCK.FCKeditorV2.Uploader" AutoEventWireup="false" StylesheetTheme="" %>

这样就解决了500的内部错误。


国外网站


After Download You Change This Lines In  FileWorkerBase.cs

 代码如下 复制代码

protected string UserFilesDirectory

{

get

{

if ( sUserFilesDirectory == null )

{

// Get the local (server) directory path translation. this.UserFilesPath

sUserFilesDirectory = Server.MapPath(string.Format("{0}{1}","~","/UserFiles/"));

}

return sUserFilesDirectory ;

}

}

Now Buid Project And Change The Refrence To FredCK.FCKeditorV2.dll (Refrence Again)

 代码如下 复制代码

After Building This Changes And Adding Project Go To fckconfig.js and Change like This Lines

var _FileBrowserLanguage = 'aspx' ; // asp | aspx | cfm | lasso | perl | php | py

var _QuickUploadLanguage = 'aspx' ; // asp | aspx | cfm | lasso | php

业务需要把一个html页面中的内容导出到excle文件里面,一个常用的方法是在需要导出的jsp页面中增加:
 代码如下 复制代码

response.setContentType("application/vnd.ms-Excel; charset=gb2312");

response.setHeader("Content-disposition","attachment;filename=excel文件名.xls");

但是经常遇到会把身份证等数字比较长的数据改成科学计数法来显示。


用IE的用户,如果一个html页面有table的话,可以把table导出到excle文件里面,但是经常遇到会把身份证等数字比较长的数据改成科学计数法来显示。很是头疼。
有说加个单引号可以解决,但是我这里测试,显示和导出的结果都有单引号。效果不好。
同事找到一个解决方案比较好。


在html页面里面加上一段css
然后在出现问题的字段应用这种style就可以了。
测试通过。神奇

 代码如下 复制代码

<style type="text/css">
<!--
td {
    background-color: #FFFFFF;
}
 
.txt
    {padding-top:1px;
    padding-right:1px;
    padding-left:1px;
    mso-ignore:padding;
    color:black;
    font-size:11.0pt;
    font-weight:400;
    font-style:normal;
    text-decoration:none;
    font-family:宋体;
    mso-generic-font-family:auto;
    mso-font-charset:134;
    mso-number-format:"@";
    text-align:general;
    vertical-align:middle;
    mso-background-source:auto;
    mso-pattern:auto;
    white-space:nowrap;}
-->
</style>

原来css还有这种功效啊,把上面代码放在要导入的html页面中就解决的了这些办法。

开启FCKeditor编辑器的图片上传功能及解决图片路径问题,有需要的同学可参考一下。

1. 打开网站后台编辑器里的admin/editor/fckconfig.js这个文件

找到FCKConfig.ImageUpload = false 这句,把false改成true就行啦。

FCKConfig.ImageBrowser = false ; 这里也同样把false改成true

2. 看一下admin/editor/editor目录下面的filemanager文件夹是否存在,如果不在就去下载一个2.6.3版本以上的fck编辑器,把里面的filemanager文件夹复制过来。当然这里是ASP的,所以其他语言像PHP什么的文件夹可以删除。

3. 接下来设置文件上传的路径,打开admin/editor/filemanager/connectors/asp文件夹的config.asp这个文件进行如下设置

ConfigIsEnabled = True 是否开启上传功能

ConfigUserFilesPath = “../../../../../uploads/” 文件上传目录,相对于该文件夹

这里要重点指出的ConfigUserFilesPath = “../../../../../uploads/”这里如果这样设置,我最后发现两个问题

 

A. ConfigUserFilesPath = “../../../../../uploads/”这样设置虽然图片可以上传,但插入编辑器里的图片路径是有问题的,所以我试了很多次最后把它改成ConfigUserFilesPath = “/uploads/”就可以了。如果您的网站是放在下级文件夹里也可以这样设置ConfigUserFilesPath = “文件夹名称/uploads/”。

B. 至于第二个问题,我感觉好奇怪,FCKeditor编辑器的图片路径会出现两个斜杠//,虽然图片也能显示,但看起来总归不舒服。请打开admin/editor/editor/ filemanager/connectors/asp文件夹里的,io.asp这个文件,请把:

function CombinePaths( sBasePath, sFolder)

CombinePaths = RemoveFromEnd(sBasePath, "/") & "/" & RemoveFromStart( sFolder, "/")

end function

改成

function CombinePaths( sBasePath, sFolder)

sFolder = replace(sFolder, "", "/")

CombinePaths = RemoveFromEnd(sBasePath, "/") & "/" & RemoveFromStart( sFolder, "/")

end function

4. 最后设置上传后的图片自动改名,请打开admin/editor/editor/ filemanager/connectors/asp文件夹里的commands.asp这个文件

在文件中添加如下语句

dim rannum

dim dtnow

dim getnewfilename

dtnow=now()

randomize

rannum=int(90*rnd)+10

getnewfilename=year(dtnow) & right("0" & month(dtnow),2) & right("0" & day(dtnow),2) & right("0"& hour(dtnow),2) & right("0”"& minute(dtnow),2) & right("0" & second(dtnow),2) & rannum

并将

sFileName = ouploader.file("newfile")name

改为

sFileName = getnewfilename &"."& split(ouploader.file("newfile").name,".")(1)
完成效果.:

OK 是服务器返回的信息,非ckeditor自带.



最后,如果能在上传成功后直接调用Info的onChange方法的话,是最完美的..可是我始终调用不了这个方法...

完毕,各位自己去测试吧. 另在image.js中有些方法也可以自己改动,如onOK-->表示在点击确定时会触发的方法

标签:[!--infotagslink--]

您可能感兴趣的文章: