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>
--------------------编程问答--------------------
不可能哦 这个网站是内部网站 我们是进不去的 这个页面是用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试验下看看 --------------------编程问答--------------------
不行 我试过了 --------------------编程问答--------------------
额
我再问一下吧 我想确定到底是不是编码的问题 因为出错的信息是变量未定义。。
从doc.Body.AppendChild(newEle);这句来看
我怀疑是不是插入script的位置不对啊 怎么插入到body中?
--------------------编程问答--------------------
我也纠结 在页面编码为gb2312的页面是可行可 不写charset="utf-8"也没问题 --------------------编程问答-------------------- 请问你的那个未定义变量是哪个 是外部要引入的js里的吗?
--------------------编程问答-------------------- doc.head.AppendChild(newEle); 看看行不行 不行的话回答楼上(15楼)的问题吧。。 这玩意得慢慢来了。。 估计我也要纠结了。。。 先从出错的信息下手吧 --------------------编程问答--------------------
那个变量就是单元格的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吧 --------------------编程问答--------------------
我用innerelement.value能插入它的文本值 我的js主要目的是插入他的value值
我用正则能匹配到这个id 说明它是存在的 --------------------编程问答--------------------
我就怕你的js插入的位置在定义var dataFields变量的之前的话 那么就会发生未定义错误了 我还是怀疑位置啊。。。 --------------------编程问答-------------------- 是不是js文件编码问题? --------------------编程问答--------------------
额 这个问题 我避免了 我是加载完页面以后插入的js js应该是插在最低行 这个我的程序 在gb2312的编码格式下就好使 蛋疼啊 我试了N多种办法 我应该能确定是编码的问题 --------------------编程问答--------------------
假设是编码的问题 应该怎么解决 求解
补充:.NET技术 , C#