当前位置:编程学习 > C#/ASP.NET >>

GBK页面如何插入js 各位大虾帮帮忙

一个页面编码为GBK的页面  我插入了一段js   js的格式选择的是utf-8 代签名   js的charset要怎么设置才能让页面正确读取到js   现在的错误是js的变量未定义  --------------------编程问答-------------------- 各位前辈  都不要潜水了  出来帮帮小弟 --------------------编程问答-------------------- 变量未定义和编码有关系吗。。  LZ把代码发下看看  哪出的错。。 --------------------编程问答-------------------- /// <summary>
        /// 插入脚本gbk
        /// </summary>
        /// <param name="doc"></param>
        private void InsertScript2(HtmlDocument doc)
        {
            if (null != doc.GetElementById("idPlusFunc")) return;

            //new script
            HtmlElement newEle = doc.CreateElement("script");
            mshtml.HTMLScriptElement script = newEle.DomElement as mshtml.HTMLScriptElement;
            script.id = "idPlusFunc";
            script.type = "text/javascript";
            script.charset = "gbk";
            script.src = Path.Combine(Application.StartupPath, @"data\script\Func.js");
            doc.Body.AppendChild(newEle);

            this.m_WebBrowserHelper.WaitForDocumentComplete();
        } --------------------编程问答-------------------- //页面代码
<script type="text/javascript">
var CMBChina_CreditCard_BizApp_Domain = "cc.cmbchina.com";
var ExtJS_BlankImageURL_Prefix = "http://biz.cc.cmbchina.com/resources/base";
var staticResUrl = "http://biz.cc.cmbchina.com/resources/fitsjs2.8/";
var USER_ID = "Z04241";
</script>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh_CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<meta http-equiv="Cache-Control" content="no-cache, no-store" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
//其余省略了  
我是winfrom   用webbrowser控件打开的页面  然后插入那个js --------------------编程问答-------------------- //js
function ShowAddMerchantInfo(){
   DataDetail.resetDetail();
}

function ShowAddAccountInfo(){
   DataDetail.resetDetail();
}

function ShowAddWaresMaintainInfo() {
   DataDetail.resetDetail();
}
//检查商户是否存在
function CheckExistsMerchant(strMerchantNo)
{
    merchantNo.value=strMerchantNo;
var _merchantNo = strMerchantNo;
var _doc = getMsgCtn();
var paramNode = _doc.createElement("condition");
_doc.documentElement.appendChild(paramNode);
paramNode.setAttribute("detailDataKey",_merchantNo);
paramNode.setAttribute("functionPara","001");
var proxy=new XMLProxy();
var xmlDom=proxy.send("./MerchantInfoSetting.do?func=getDataList",_doc);
if(checkResponse(xmlDom) == "0000")
{
//ALERT.showWarn("商户号已存在");
return true;
}

paramNode.setAttribute("functionPara","003");
xmlDom=proxy.send("./MerchantInfoSetting.do?func=getDataList",_doc);
if(checkResponse(xmlDom) == "0000")
{
//ALERT.showWarn("商户号已存在");
return true;
}

//ALERT.showInfo("商户不存在");
return false;
}

//取所有省/直辖市列表
function GetOurProvinceCodeList()
{
var _currObj = DataDetail;
var _currContry = "CHN";
var _provinceNode = _currObj.ourAreaCodeDoc.selectSingleNode("//country[@key='"+_currContry+"']/province");
var _retList="";

while(_provinceNode != null)
{
var strDesc = _provinceNode.getAttribute("desc");
var strKey = _provinceNode.getAttribute("key");
if (_retList=="")
{
    _retList=strKey + ":" + strDesc;
}
else
{
    _retList= _retList + ";" + strKey + ":" + strDesc;
}

_provinceNode = _provinceNode.nextSibling;
}

return _retList;
}

//取所有省/直辖市列表
function GetProvinceCodeList()
{
var _currObj = DataDetail;
var _currContry = "CHN";
var _provinceNode = _currObj.areaCodeDoc.selectSingleNode("//province");
var _retList="";

while(_provinceNode != null)
{
var strDesc = _provinceNode.getAttribute("name");
var strKey = _provinceNode.getAttribute("code");
if (_retList=="")
{
    _retList=strKey + ":" + strDesc;
}
else
{
    _retList= _retList + ";" + strKey + ":" + strDesc;
}

_provinceNode = _provinceNode.nextSibling;
}

return _retList;
}

function GetOurCityCodeList(provinceCode)
{
var _currObj = DataDetail;
var _currContry =  "CHN";
var _currProvince = provinceCode;
var _retList="";

var _cityNode = _currObj.ourAreaCodeDoc.selectSingleNode("//country[@key='"+_currContry+"']/province[@key='"+_currProvince+"']/city");
while(_cityNode != null)
{
    
var strDesc= _cityNode.getAttribute("desc");
var strKey = _cityNode.getAttribute("key");
if (_retList=="")
{
    _retList=strKey + ":" + strDesc;
}
else
{
    _retList= _retList + ";" + strKey + ":" + strDesc;
}

_cityNode = _cityNode.nextSibling;
}

return _retList;
}

//取指定省/直辖市列表下的城市
function GetCityCodeList(provinceCode)
{
var _currObj = DataDetail;
var _currContry =  "CHN";
var _currProvince = provinceCode;
var _retList="";

var _cityNode = _currObj.areaCodeDoc.selectSingleNode("//province[@code='"+_currProvince+"']/city");
while(_cityNode != null)
{
    
var strDesc= _cityNode.getAttribute("name");
var strKey = _cityNode.getAttribute("code");
if (_retList=="")
{
    _retList=strKey + ":" + strDesc;
}
else
{
    _retList= _retList + ";" + strKey + ":" + strDesc;
}

_cityNode = _cityNode.nextSibling;
}

return _retList;
}

function SetOurProvince(realVal) {
    ourProvince.setValue(realVal);
    return true;
}

function Setdlg_status(realVal) {
    dlg_status.setValue(realVal);
    return true;
}

function Setdlg_clearMode(realVal) {
    dlg_clearMode.setValue(realVal);
    return true;
}

function Setdlg_FeepostFlag(realVal) {
    dlg_FeepostFlag.setValue(realVal);
    return true;
}

function Setdlg_ParseFeerefundFlag(realVal) {
    dlg_ParseFeerefundFlag.setValue(realVal);
    return true;
}

function Setdlg_refundMode(realVal) {
    dlg_refundMode.setValue(realVal);
    return true;
}

function Setdlg_refundChSelect(realVal) {
    dlg_refundChSelect.setValue(realVal);
    return true;
}

function Setdlg_refundMcSelect(realVal) {
    dlg_refundMcSelect.setValue(realVal);
    return true;
}

function Setdlg_cusFeeSelect(realVal) {
    dlg_cusFeeSelect.setValue(realVal);
    return true;
}

function Setdlg_fcSelect(realVal) {
    dlg_fcSelect.setValue(realVal);
    return true;
}

function Setdlg_feeJqFlag(realVal) {
    dlg_feeJqFlag.setValue(realVal);
    return true;
}

function Setdlg_LaunchChannel(realVal) {
    dlg_LaunchChannel.setValue(realVal);
    return true;
}

function Setdlg_pointMode() {
    dlg_pointMode.setValue(realVal);
    return true;
}

function Setdlg_merType() {
    dlg_merType.setValue(realVal);
    return true;
}
function Setdlg_bkTag(realVal) {
    dlg_bkTag.setValue(realVal);
    return true;
}

function Setdlg_groupTag(realVal) {
    dlg_groupTag.setValue(realVal);
    return true;
}

function Setdlg_merconfFlag(realVal) {
    dlg_merconfFlag.setValue(realVal);
    return true;
}

function Setdlg_merpostFlag(realVal) {
    dlg_merpostFlag.setValue(realVal);
    return true;
}

function Setdlg_cuspostFlag(realVal) {
    dlg_cuspostFlag.setValue(realVal);
    return true;
}

function GetOurProvince()
{
    return ourProvince.getValue();
}

function SetOurZone(realVal)
{
    ourZone.setValue(realVal);
    return true;
}

function Setdlg_fqType(realVal) {
    dlg_fqType.setValue(realVal);
    return true;
}
function SetpriceType(realVal) {
    priceType.setValue(realVal);
    return true;
}
function SetfqCheckType(realVal) {
    fqCheckType.setValue(realVal);
    return true;
}

function SetfqCheckOpType(realVal) {
    fqCheckOpType.setValue(realVal);
    return true;
}

function SetCardControlNoValue(realVal)
{
    cardControlNo.setValue(realVal);
    return true;
}

function SetTransControlNoValue(realVal)
{
    transControlNo.setValue(realVal);
    return true;
}

function SetClearFormatCodeValue(realVal)
{
    clearFormatCode.setValue(realVal);
    return true;
}

function SetAcqAreaId_province(realVal)
{
    acqAreaId_province.setValue(realVal);
    return true;
}

function GetAcqAreaId_province()
{
    return acqAreaId_province.getValue();
}

function SetAcqAreaId_city(realVal)
{
    acqAreaId_city.setValue(realVal);
    return true;
}
function SetAcqAreaId(realVal)
{
    acqAreaId.setValue(realVal);
    return true;
}

function SetApplyChannel(realVal)
{
    applyChannel.setValue(realVal);
    return true;
}

function SetAutoFinishFlag(dispVal)
{
    if (dispVal=="1")
    {
        autoFinishFlag.value="Y";
        batchUpFlag.value="N";
    }
    else
    {
        autoFinishFlag.value="N";
        batchUpFlag.value="Y";
    }

    return autoFinishFlag.value;
}

function Test()
{
  alert("test");
} --------------------编程问答-------------------- 你先不用代码直接插入  先直接将你的js手动固定插入到HTML中看看
<script type=”text/javascript” src=”test.js” charset="gbk"></script>
先这样看看 能不能解决问题

--------------------编程问答-------------------- 综上所述   前辈们帮忙看看   顶起来! --------------------编程问答-------------------- 你说你的页面编码是GBK  外部引入的js编码是UTF-8??
那我就写反了
<script type=”text/javascript” src=”test.js” charset="utf-8"></script>
--------------------编程问答--------------------
引用 6 楼 chopper7278 的回复:
你先不用代码直接插入 先直接将你的js手动固定插入到HTML中看看
<script type=”text/javascript” src=”test.js” charset="gbk"></script>
先这样看看 能不能解决问题

不可能哦  这个网站是内部网站 我们是进不去的  这个页面是用ext js 做的 --------------------编程问答-------------------- 在编码为gb2312的页面中 我的js就是可用的 --------------------编程问答-------------------- 外部js 是什么编码  引入的时候就要写什么编码

HtmlElement newEle = doc.CreateElement("script");
  mshtml.HTMLScriptElement script = newEle.DomElement as mshtml.HTMLScriptElement;
  script.id = "idPlusFunc";
  script.type = "text/javascript";
  script.charset = "utf-8";
  script.src = Path.Combine(Application.StartupPath, @"data\script\Func.js");
  doc.Body.AppendChild(newEle);

gbk改成utf-8试验下看看 --------------------编程问答--------------------
引用 8 楼 chopper7278 的回复:
你说你的页面编码是GBK 外部引入的js编码是UTF-8??
那我就写反了
<script type=”text/javascript” src=”test.js” charset="utf-8"></script>

不行 我试过了  --------------------编程问答--------------------
引用 12 楼 hanxin19891219 的回复:
引用 8 楼 chopper7278 的回复:
你说你的页面编码是GBK 外部引入的js编码是UTF-8??
那我就写反了
<script type=”text/javascript” src=”test.js” charset="utf-8"></script>

不行 我试过了

额 
我再问一下吧  我想确定到底是不是编码的问题  因为出错的信息是变量未定义。。
从doc.Body.AppendChild(newEle);这句来看
我怀疑是不是插入script的位置不对啊  怎么插入到body中?
  --------------------编程问答--------------------
引用 13 楼 chopper7278 的回复:
引用 12 楼 hanxin19891219 的回复:

引用 8 楼 chopper7278 的回复:
你说你的页面编码是GBK 外部引入的js编码是UTF-8??
那我就写反了
<script type=”text/javascript” src=”test.js” charset="utf-8"></script>

不行 我试过了

额 
我再问一下吧 我想确定到底是不……

我也纠结   在页面编码为gb2312的页面是可行可  不写charset="utf-8"也没问题    --------------------编程问答-------------------- 请问你的那个未定义变量是哪个  是外部要引入的js里的吗?
--------------------编程问答-------------------- doc.head.AppendChild(newEle); 看看行不行  不行的话回答楼上(15楼)的问题吧。。  这玩意得慢慢来了。。  估计我也要纠结了。。。 先从出错的信息下手吧 --------------------编程问答--------------------
引用 15 楼 chopper7278 的回复:
请问你的那个未定义变量是哪个 是外部要引入的js里的吗?

那个变量就是单元格的id啊  页面代码是
//var dataFields =[
                    {id: "dlg_mdNo", name: "mdNo", label: "[商品档编号 ]", dtype: 'trigger',triggerClickHandler:checkMdNo, allowBlank: false, vtype: 'numeric', size: 13, maxlength: 13},  
//{id: "dlg_mdNo", name: "mdNo", label: "[商品档编号 ]", dtype: 'text', allowBlank: false, vtype: 'numeric', size: 13, maxlength: 13},
{id: "dlg_merchantNo", name: "merchantNo", label: "[对应商户代码]", dtype: 'text', allowBlank: false, vtype: 'alphanum', size: 15,minlength:15, maxlength: 15},
{id: "dlg_amortizeTimes", name: "amortizeTimes", label: "[分期数]", dtype: 'text', allowBlank: false, vtype: 'numeric', size: 3,maxlength: 3},
{id: "dlg_fqType", name: "fqType", label: "[分期类型  ]", dtype: 'combox', allowBlank: true, data: fqTypeData, size: 15, valueField: '0', textField: '1', value: ''},
{id: "dlg_type", name: "type", label: "[商品类别  ]", dtype: 'text', allowBlank: false, vtype: 'EBCDICLength', size: 10, maxlength: 10},
{id: "dlg_status", name: "status", label: "[状态 ]", dtype: 'combox', allowBlank: false, size: 10, defText: '', data: statusData, valueField: '0', textField: '1'},
{id: "dlg_originalMdNo", name: "originalMdNo", label: "[归属商品号码]", dtype: 'text', allowBlank: false, vtype: 'numeric', size: 13, maxlength: 13},
{id: "dlg_merInnerId", colspan:2,name: "merInnerId", label: "[内部商品号 ]", dtype: 'text', allowBlank: false, vtype: 'numeric', size: 13, maxlength: 13},
{id: "dlg_name", name: "name", colspan:3,label: "[商品名称  ]", dtype: 'text', allowBlank: false, vtype: 'EBCDICLength', size: 70, maxlength: 50},
{id: "dlg_clearMode", name: "clearMode",colspan:3, label: "[商品金额+积分清算方式]", dtype: 'combox', allowBlank: false, size: 20, defText: '', data: clearModeData, valueField: '0', textField: '1'},
//后面省略了 
当在htm里面他应该是会转译成htm的代码   {id: "dlg_mdNo",...  这个就会变成控件的id吧 --------------------编程问答--------------------
引用 16 楼 chopper7278 的回复:
doc.head.AppendChild(newEle); 看看行不行 不行的话回答楼上(15楼)的问题吧。。 这玩意得慢慢来了。。 估计我也要纠结了。。。 先从出错的信息下手吧

我用innerelement.value能插入它的文本值  我的js主要目的是插入他的value值
我用正则能匹配到这个id  说明它是存在的 --------------------编程问答--------------------
引用 18 楼 hanxin19891219 的回复:
引用 16 楼 chopper7278 的回复:
doc.head.AppendChild(newEle); 看看行不行 不行的话回答楼上(15楼)的问题吧。。 这玩意得慢慢来了。。 估计我也要纠结了。。。 先从出错的信息下手吧

我用innerelement.value能插入它的文本值  我的js主要目的是插入他的value值
我用正则能匹配到这个id  说明它是存在的

我就怕你的js插入的位置在定义var dataFields变量的之前的话   那么就会发生未定义错误了  我还是怀疑位置啊。。。 --------------------编程问答-------------------- 是不是js文件编码问题? --------------------编程问答--------------------
引用 19 楼 chopper7278 的回复:
引用 18 楼 hanxin19891219 的回复:

引用 16 楼 chopper7278 的回复:
doc.head.AppendChild(newEle); 看看行不行 不行的话回答楼上(15楼)的问题吧。。 这玩意得慢慢来了。。 估计我也要纠结了。。。 先从出错的信息下手吧

我用innerelement.value能插入它的文本值 我的js主要目的是插入他的value值
……

额  这个问题 我避免了  我是加载完页面以后插入的js  js应该是插在最低行  这个我的程序 在gb2312的编码格式下就好使  蛋疼啊  我试了N多种办法 我应该能确定是编码的问题 --------------------编程问答--------------------
引用 20 楼 jprshhx0 的回复:
是不是js文件编码问题?

假设是编码的问题 应该怎么解决  求解
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,