parent.document.getElementById("si").innerHTML= '<%=ga2()%>'
这样出错了:
parent.document.getElementById("si").innerHTML= '<script type="text/javascript" charset="utf-8">title:'<%=ga2()%>'</script>'
请问script该怎么嵌套啊?
33 个解决方案
#1
不能这样写 只能创建节点 自己页面建立script节点也要创建 子父没影响
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'a.js';
head.appendChild(script);
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'a.js';
head.appendChild(script);
#2
如果你是要执行父窗口的函数,
比如:父窗口有一个函数:test
parent.test();//即可执行,且有参数时一样可以传入参数执行
如果你是要修改父窗口的一个变量的值
比如:父窗口有一个全局变量:_global
parent._global='我被子页面修改了值';//则在父窗口应用到此变量的值被修改
比如:父窗口有一个函数:test
parent.test();//即可执行,且有参数时一样可以传入参数执行
如果你是要修改父窗口的一个变量的值
比如:父窗口有一个全局变量:_global
parent._global='我被子页面修改了值';//则在父窗口应用到此变量的值被修改
#3
parent用于框架 建议 将parent换成opener试试
#4
这是分享按钮的变量。腾讯的可以替换,但新浪、百度的没有替换:
子页面:parent._ga2='我被子页面修改了值'
父页面:
<script type="text/javascript">
var _ga2="123"
</script>
以下是新浪分享,结果依旧是定义的“123”:
<script type="text/javascript" charset="utf-8">
(function(){
var _w = 106 , _h = 24;
var param = {
url:location.href,
type:'5',
title:_ga2+'…', /**分享的文字内容(可选,默认为所在页面的title)*/
rnd:new Date().valueOf()
}
var temp = [];
for( var p in param ){
temp.push(p + '=' + encodeURIComponent( param[p] || '' ) )
}
document.write('<iframe allowTransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?' + temp.join('&') + '" width="'+ _w+'" height="'+_h+'"></iframe>')
})()
</script>
以下是腾讯分享,变量正常替换为:“我被子页面修改了值”:
<script type="text/javascript">
function postToWb(){
var _t = _ga2+'…';//标题和描述信息
var metainfo = document.getElementsByTagName("meta");
for(var metai = 0;metai < metainfo.length;metai++){
if((new RegExp('description','gi')).test(metainfo[metai].getAttribute("name"))){
_t = metainfo[metai].attributes["content"].value;
}
}
// _t = document.title+_t;//请在这里添加你自定义的分享内容
if(_t.length > 120){
_t= _t.substr(0,117)+'...';
}
_t = encodeURI(_t);
var _u = 'http://share.v.t.qq.com/index.php?c=share&a=index&url='+_url+'&appkey='+_appkey+'&pic='+_pic+'&assname='+_assname+'&title='+_t;
window.open( _u,'', 'width=700, height=680, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, location=yes, resizable=no, status=no' );
}
</script>
百度分享,结果也是一开始定义的“123”:
<script type="text/javascript">
var bds_config = {'bdText':_ga2+'…'};
document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?t=" + new Date().getHours();
</script>
是我写错了?还是别的原因?腾讯通过了,新浪和百度为什么不行?
腾讯是:
=_ga2+'…';
新浪、百度是:
:_ga2+'…';
#5
你那已经写死了,更改变量的值没有任何作用
放弃document.write,变更为在一个指定的div中输出。比如:<div id="_bdShares"></div>
然后将那个输出分享的代码封装成一个函数[比如函数名为:myBdShares],将_ga2做为函数的参数就是了
在子页面使用:parent.myBdShares(参数值)去调用它,使其重新输出即可
放弃document.write,变更为在一个指定的div中输出。比如:<div id="_bdShares"></div>
然后将那个输出分享的代码封装成一个函数[比如函数名为:myBdShares],将_ga2做为函数的参数就是了
在子页面使用:parent.myBdShares(参数值)去调用它,使其重新输出即可
#6
都和你的腾讯分享代码一样。使用function将功能代码封装起来。然后在子页面调用,使其重新生成新的代码就是了
你自己有一个例子成功了,其他的照着改就是了
你自己有一个例子成功了,其他的照着改就是了
#7
我的基础很差,试过类似<div id="_bdShares"></div>的办法,但是出错了。而且也不知道怎样封装、、、
可以麻烦你用我上面的代码写个例子吗?
可以麻烦你用我上面的代码写个例子吗?
#8
百度分享,你应该可以在子页面这么写:
parent.bds_config = {'bdText':_ga2+'…'};
parent.document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?t=" + new Date().getHours();
#9
这样写没有效果,显示的还是一开始定义的123
#10
新浪分享:
将原来的代码改为:
试试
将原来的代码改为:
<div id="_sinaShares"></div>
<script type="text/javascript" charset="utf-8">
function sinaShares(){
var _w = 106 , _h = 24;
var param = {
url:location.href,
type:'5',
title:_ga2+'…', /**分享的文字内容(可选,默认为所在页面的title)*/
rnd:new Date().valueOf()
}
var temp = [];
for( var p in param ){
temp.push(p + '=' + encodeURIComponent( param[p] || '' ) )
};
document.getElementById("_sinaShares").innerHTML='<iframe allowTransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?' + temp.join('&') + '" width="'+ _w+'" height="'+_h+'"></iframe>';
};
sinaShares();
</script>
//子页面想修改变量值后调用的话:
parent._ga2='111111111';
parent.sinaShares();
试试
#11
parent.bds_config = {'bdText':'1111111111111111…'};
parent.document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?t=" + new Date().getHours();
这样如果没效果的话,那就是有可能你百度分享的代码还有其他关联的地方没搞清楚
#12
差不多就这意思吧。自己参考着修改,调试吧
#13
百度分享没有值,新浪还是原来的123?!
#14
好,我再好好研究一番~~基础太差了~~
谢谢你的耐心能解答,无以回报,不管能不能解决,我先把分值加到100。
谢谢你的耐心能解答,无以回报,不管能不能解决,我先把分值加到100。
#15
新浪分享无效的话,改成下面的试试呗
上面是父页面中的代码
子页面直接传参调用
parent.sinaShares('aaaaaabbbbbb');
<div id="_sinaShares"></div>
<script type="text/javascript" charset="utf-8">
function sinaShares(a){
var _w = 106 , _h = 24;
var param = {
url:location.href,
type:'5',
title:a+'…', /**分享的文字内容(可选,默认为所在页面的title)*/
rnd:new Date().valueOf()
}
var temp = [];
for( var p in param ){
temp.push(p + '=' + encodeURIComponent( param[p] || '' ) )
};
document.getElementById("_sinaShares").innerHTML='<iframe allowTransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?' + temp.join('&') + '" width="'+ _w+'" height="'+_h+'"></iframe>';
};
sinaShares(_ga2);
</script>
上面是父页面中的代码
子页面直接传参调用
parent.sinaShares('aaaaaabbbbbb');
#16
你在父页面中随便写个函数
function testExec(){
alert('调用成功')
}
然后在要刷新新浪分享的子页面中使用:parent.testExec()。看看是不是调用成功了
如果子页面是使用iframe内嵌的话,应该是没有问题的
function testExec(){
alert('调用成功')
}
然后在要刷新新浪分享的子页面中使用:parent.testExec()。看看是不是调用成功了
如果子页面是使用iframe内嵌的话,应该是没有问题的
#17
不好意思 你这个方法好像只在iframe子页面有效吧,我用的是window.open也遇到了类似的问题,原来用window.opener可以,不过chrome不支持,无奈只好找别的方法,parent好像在window.open中无效的,请问有别的方法解决这个问题吗?
#18
腾讯没问题,新浪和百度总也弄不好,我把全部代码发上来你帮着看看好吗?
多了个sj的图片变量,同样在腾讯显示,新浪和百度不行(百度图片分享效果在网易按钮里看着方便):
父页面:
iframe子页面3.aspx:
多了个sj的图片变量,同样在腾讯显示,新浪和百度不行(百度图片分享效果在网易按钮里看着方便):
父页面:
<%@CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<script type="text/javascript">
var _ga2="全局变量_ga2"
var sj="全局变量sj"
function testExec(){
alert('调用成功')
}
</script>
<div id="Layer1" style="width:100%; height:100px; position:absolute; background-color: #FF00FF; visibility: hidden; left: 260px; top: 60px;">DIV返回:
<div id="aa" name="aa">此处显示 id "aa" 的内容</div>
<table width="500" align="center">
<tr align="center">
<td colspan="2">
<div align="center" id="bdshare" class="bdshare_t bds_tools get-codes-bdshare">
<span class="bds_more">分享到:</span>
<a class="bds_tsohu">搜狐微博</a>
<a class="bds_t163">网易微博</a>
<a class="bds_douban">豆瓣网</a>
<a class="bds_qzone">QQ空间</a>
<a class="bds_renren">人人网</a>
</div>
<script type="text/javascript" id="bdshare_js" data="type=tools&uid=256631" ></script>
<script type="text/javascript" id="bdshell_js"></script>
<script type="text/javascript">
var bds_config = {'bdText':_ga2+'…','bdPic':'<%="http://csdnimg.cn/www/images/csdnindex_"+sj+".gif"%>'};
document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?t=" + new Date().getHours();
</script>
</td>
</tr>
<tr align="center">
<td>
<script type="text/javascript" charset="utf-8">
(function(){
var _w = 106 , _h = 24;
var param = {
url:location.href,
type:'5',
count:'', /**是否显示分享数,1显示(可选)*/
appkey:'', /**您申请的应用appkey,显示分享来源(可选)*/
title:_ga2+'…', /**分享的文字内容(可选,默认为所在页面的title)*/
pic:'http://csdnimg.cn/www/images/csdnindex_'+sj+'.gif', /**分享图片的路径(可选)*/
ralateUid:'', /**关联用户的UID,分享微博会@该用户(可选)*/
language:'zh_cn', /**设置语言,zh_cn|zh_tw(可选)*/
rnd:new Date().valueOf()
}
var temp = [];
for( var p in param ){
temp.push(p + '=' + encodeURIComponent( param[p] || '' ) )
}
document.write('<iframe allowTransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?' + temp.join('&') + '" width="'+ _w+'" height="'+_h+'"></iframe>')
})()
</script> </td>
<td>
<a href="javascript:void(0)" onclick="postToWb();return false;" class="tmblog"><img src="http://v.t.qq.com/share/images/s/b24.png" border="0" alt="转播到腾讯微博"></a>
<script type="text/javascript">
function postToWb(){
var _url = encodeURIComponent(document.location);
var _assname = encodeURI("");//你注册的帐号,不是昵称
var _appkey = encodeURI("");//你从腾讯获得的appkey
var _pic = encodeURI('http://csdnimg.cn/www/images/csdnindex_'+sj+'.gif');//(例如:var _pic='图片url1|图片url2|图片url3....)
var _t = _ga2+'…';//标题和描述信息
var metainfo = document.getElementsByTagName("meta");
for(var metai = 0;metai < metainfo.length;metai++){
if((new RegExp('description','gi')).test(metainfo[metai].getAttribute("name"))){
_t = metainfo[metai].attributes["content"].value;
}
}
// _t = document.title+_t;//请在这里添加你自定义的分享内容
if(_t.length > 120){
_t= _t.substr(0,117)+'...';
}
_t = encodeURI(_t);
var _u = 'http://share.v.t.qq.com/index.php?c=share&a=index&url='+_url+'&appkey='+_appkey+'&pic='+_pic+'&assname='+_assname+'&title='+_t;
window.open( _u,'', 'width=700, height=680, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, location=yes, resizable=no, status=no' );
}
</script> </td>
</tr>
</table>
</div>
<iframe src="3.aspx" name="i2" scrolling="auto"></iframe>
<form action="3.aspx" method="post" name="form1" target="i2" id="form1">
<textarea name="te" cols="" rows="">36</textarea>
<input type="submit" name="Submit" value="提交" />
</form>
</body>
</html>
iframe子页面3.aspx:
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="utf-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<%
string re=Request.Form["te"];
string sj="logo";
%>
<%="结果:"+re%>
<script>
<% if (!String.IsNullOrEmpty(re))
{%>
parent.document.getElementById("aa").innerHTML= '返回:<%=re.Replace("\r\n","<br/>").Replace("'","\\'")%>'
parent.document.getElementById("Layer1").style.visibility=""//显示
parent._ga2='<%=re.Replace("\r\n","").Replace("'","\\'")%>';
parent.sj='<%=sj%>';
parent.testExec()
<%}%>
</script>
</body>
</html>
#19
父页面:
3.aspx
一次加载是可以控制的。但不知道你是不是想提交表单后动态修改。估计百度分享可能有问题
其他的自己组织吧
<script type="text/javascript">
var _ga2="全局变量_ga2"
var sj="全局变量sj"
</script>
<table width="500" align="center">
<tr align="center">
<td colspan="2">
<div align="center" id="bdshare" class="bdshare_t bds_tools get-codes-bdshare">
<span class="bds_more">分享到:</span>
<a class="bds_tsohu">搜狐微博</a>
<a class="bds_t163">网易微博</a>
<a class="bds_douban">豆瓣网</a>
<a class="bds_qzone">QQ空间</a>
<a class="bds_renren">人人网</a>
</div>
<script type="text/javascript" id="bdshare_js" data="type=tools&uid=256631" ></script>
<script type="text/javascript" id="bdshell_js"></script>
<script type="text/javascript">
var bds_config;
function myBdShares(a){
bds_config = {'bdText':a+'…','bdPic':'1.gif'};
//'bdPic':<%="http://csdnimg.cn/www/images/csdnindex_"+sj+".gif"%>这算什么写法
//'bdPic':'http://csdnimg.cn/www/images/csdnindex_'+sj+'.gif'才对吧?
document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?t=" + new Date().getHours();
};
//默认时,先不要调用百度分享;百度分享可能是一次性加载的,生成后不能再更改
</script>
</td>
</tr>
<tr align="center">
<td>
<div id="_sinaShares"></div>
<script type="text/javascript" charset="utf-8">
function sinaShares(a){
var _w = 106 , _h = 24;
var param = {
url:location.href,
type:'5',
title:a+'…', /**分享的文字内容(可选,默认为所在页面的title)*/
rnd:new Date().valueOf()
}
var temp = [];
for( var p in param ){
temp.push(p + '=' + encodeURIComponent( param[p] || '' ) )
};
document.getElementById("_sinaShares").innerHTML='<iframe allowTransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?' + temp.join('&') + '" width="'+ _w+'" height="'+_h+'"></iframe>';
};
sinaShares(_ga2);
</script>
</td>
<td>
<a href="javascript:void(0)" onclick="postToWb();return false;" class="tmblog"><img src="http://v.t.qq.com/share/images/s/b24.png" border="0" alt="转播到腾讯微博"></a>
<script type="text/javascript">
function postToWb(){
var _url = encodeURIComponent(document.location);
var _assname = encodeURI("");//你注册的帐号,不是昵称
var _appkey = encodeURI("");//你从腾讯获得的appkey
var _pic = encodeURI('http://csdnimg.cn/www/images/csdnindex_'+sj+'.gif');//(例如:var _pic='图片url1|图片url2|图片url3....)
var _t = _ga2+'…';//标题和描述信息
var metainfo = document.getElementsByTagName("meta");
for(var metai = 0;metai < metainfo.length;metai++){
if((new RegExp('description','gi')).test(metainfo[metai].getAttribute("name"))){
_t = metainfo[metai].attributes["content"].value;
}
}
if(_t.length > 120){
_t= _t.substr(0,117)+'...';
}
_t = encodeURI(_t);
var _u = 'http://share.v.t.qq.com/index.php?c=share&a=index&url='+_url+'&appkey='+_appkey+'&pic='+_pic+'&assname='+_assname+'&title='+_t;
window.open( _u,'', 'width=700, height=680, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, location=yes, resizable=no, status=no' );
}
</script> </td>
</tr>
</table>
<iframe src="3.aspx" name="i2" id="i2" scrolling="auto"></iframe>
<form method="post" name="form1" target="i2" id="form1">
<textarea name="te" cols="" rows="">36</textarea>
<input type="submit" name="Submit" value="提交" />
</form>
3.aspx
<script type="text/javascript">
parent.myBdShares('我被子页面修改了值--百度分享');
parent.sinaShares('我被子页面修改了值--新浪分享')
</script>
一次加载是可以控制的。但不知道你是不是想提交表单后动态修改。估计百度分享可能有问题
其他的自己组织吧
#20
window.top.title = '<%=ga2()%>'
就这么简单
就这么简单
#21
parent.document.getElementById("si").innerHTML= '<script type="text/javascript" charset="utf-8">title:'<%=ga2()%>'</' + 'script>'
这样试试
这样试试
#22
学习了 这个浮动帧位置 太蛋疼了
#23
思路应该是对的,但是总出现乱码。两个页面都是utf-8,重新载入也不行!后面的调试一直没弄呢,头大啊~~~
另外20楼、21楼的办法行不通!
另外20楼、21楼的办法行不通!
#24
。。。。还在纠结??
那我就多说两句
你总体的解决思路我就觉得不好,提供个思路参数一下
1:页面中有一个定义了style="position:absolute"的层,里面装载了一个iframe,iframe中包含你那些分享
2:需要使用分享时,弹出那个层,并定好位,将iframe中需要的参数附加给iframe.src中,比如[src="share.aspx?title=我被修改了值&sj=1111"]
3:在share.aspx中根据传入的参数,生成你需要的分享代码
那我就多说两句
你总体的解决思路我就觉得不好,提供个思路参数一下
1:页面中有一个定义了style="position:absolute"的层,里面装载了一个iframe,iframe中包含你那些分享
2:需要使用分享时,弹出那个层,并定好位,将iframe中需要的参数附加给iframe.src中,比如[src="share.aspx?title=我被修改了值&sj=1111"]
3:在share.aspx中根据传入的参数,生成你需要的分享代码
#25
思路参数=思路参考。。。。。手误,手误
#26
也还没睡啊,辛苦了!
简单测试通过了,理论上应该行得通!但是现在乱码最头疼,家里没有装着VS,明天去单位重新生成新的aspx页面试试。没了乱码再试试提交表单传递多个变量。现在似乎一增加那个隐藏层就出问题不能正常传递!
你刚才说的思路,那个iframe调试好以后会设为不可见,提交显示隐藏层(再加个关闭——也就是重新隐藏的链接)就能近似达到无刷新提交的效果。不过get传递变量有长度限制,只能用post。
不早了,明天生成新页面重新再试~~
晚安!
简单测试通过了,理论上应该行得通!但是现在乱码最头疼,家里没有装着VS,明天去单位重新生成新的aspx页面试试。没了乱码再试试提交表单传递多个变量。现在似乎一增加那个隐藏层就出问题不能正常传递!
你刚才说的思路,那个iframe调试好以后会设为不可见,提交显示隐藏层(再加个关闭——也就是重新隐藏的链接)就能近似达到无刷新提交的效果。不过get传递变量有长度限制,只能用post。
不早了,明天生成新页面重新再试~~
晚安!
#27
今天用VS新生成了aspx页面(原来是dreamweaver生成的),还是有乱码,没想到这么难解决!
放进aspx.cs也不行:CS1012: 字符文本中的字符太多(而且显示的字符是乱码):行 11: parent.myBdShares('鎴戣瀛愰〉闈慨鏀逛簡鍊?-鐧惧害鍒嗕韩');
还有,分享按钮本应该在父页面显示,为什么一提交也在iframe中的2.aspx中显示了?
2.asp
2.aspx
2.aspx.cs
放进aspx.cs也不行:CS1012: 字符文本中的字符太多(而且显示的字符是乱码):行 11: parent.myBdShares('鎴戣瀛愰〉闈慨鏀逛簡鍊?-鐧惧害鍒嗕韩');
还有,分享按钮本应该在父页面显示,为什么一提交也在iframe中的2.aspx中显示了?
2.asp
<%@CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<script type="text/javascript">
var _ga2="全局变量_ga2"
var sj="全局变量sj"
</script>
<table width="500" align="center">
<tr align="center">
<td colspan="2">
<div align="center" id="bdshare" class="bdshare_t bds_tools get-codes-bdshare">
<span class="bds_more">分享到:</span>
<a class="bds_tsohu">搜狐微博</a>
<a class="bds_t163">网易微博</a>
<a class="bds_douban">豆瓣网</a>
<a class="bds_qzone">QQ空间</a>
<a class="bds_renren">人人网</a>
</div>
<script type="text/javascript" id="bdshare_js" data="type=tools&uid=256" ></script>
<script type="text/javascript" id="bdshell_js"></script>
<script type="text/javascript">
var bds_config;
function myBdShares(a){
bds_config = {'bdText':a+'…','bdPic':'1.gif'};
//'bdPic':<%="http://csdnimg.cn/www/images/csdnindex_"+sj+".gif"%>这算什么写法
//'bdPic':'http://csdnimg.cn/www/images/csdnindex_'+sj+'.gif'才对吧?
document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?t=" + new Date().getHours();
};
//默认时,先不要调用百度分享;百度分享可能是一次性加载的,生成后不能再更改
</script>
</td>
</tr>
<tr align="center">
<td>
<div id="_sinaShares"></div>
<script type="text/javascript" charset="utf-8">
function sinaShares(a){
var _w = 106 , _h = 24;
var param = {
url:location.href,
type:'5',
title:a+'…', /**分享的文字内容(可选,默认为所在页面的title)*/
rnd:new Date().valueOf()
}
var temp = [];
for( var p in param ){
temp.push(p + '=' + encodeURIComponent( param[p] || '' ) )
};
document.getElementById("_sinaShares").innerHTML='<iframe allowTransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?' + temp.join('&') + '" width="'+ _w+'" height="'+_h+'"></iframe>';
};
sinaShares(_ga2);
</script>
</td>
<td>
<a href="javascript:void(0)" onclick="postToWb();return false;" class="tmblog"><img src="http://v.t.qq.com/share/images/s/b24.png" border="0" alt="转播到腾讯微博"></a>
<script type="text/javascript">
function postToWb(){
var _url = encodeURIComponent(document.location);
var _assname = encodeURI("");//你注册的帐号,不是昵称
var _appkey = encodeURI("");//你从腾讯获得的appkey
var _pic = encodeURI('http://csdnimg.cn/www/images/csdnindex_'+sj+'.gif');//(例如:var _pic='图片url1|图片url2|图片url3....)
var _t = _ga2+'…';//标题和描述信息
var metainfo = document.getElementsByTagName("meta");
for(var metai = 0;metai < metainfo.length;metai++){
if((new RegExp('description','gi')).test(metainfo[metai].getAttribute("name"))){
_t = metainfo[metai].attributes["content"].value;
}
}
if(_t.length > 120){
_t= _t.substr(0,117)+'...';
}
_t = encodeURI(_t);
var _u = 'http://share.v.t.qq.com/index.php?c=share&a=index&url='+_url+'&appkey='+_appkey+'&pic='+_pic+'&assname='+_assname+'&title='+_t;
window.open( _u,'', 'width=700, height=680, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, location=yes, resizable=no, status=no' );
}
</script> </td>
</tr>
</table>
<iframe src="2.aspx" name="i2" id="i2" scrolling="auto"></iframe>
<form method="post" name="form1" target="i2" id="form1">
<textarea name="te" cols="" rows="">36</textarea>
<input type="submit" name="Submit" value="提交" />
</form>
</body>
</html>
2.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="2.aspx.cs" Inherits="_2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
</body>
</html>
2.aspx.cs
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
parent.myBdShares('我被子页面修改了值--百度分享');
parent.sinaShares('我被子页面修改了值--新浪分享');
}
}
#28
用记事本打开文件,另存为UTF-8试试
#29
。。。。
parent.myBdShares('我被子页面修改了值--百度分享');
parent.sinaShares('我被子页面修改了值--新浪分享');
居然这样直接写在了Page_Load中。。。。
你要写,也写在aspx页面中呀
编码的问题,把<%@CODEPAGE="65001"%>去掉,然后在vs的“文件--高级保存选项--在编码中拉到最上面,选择“UTF-8带签名””试试
parent.myBdShares('我被子页面修改了值--百度分享');
parent.sinaShares('我被子页面修改了值--新浪分享');
居然这样直接写在了Page_Load中。。。。
你要写,也写在aspx页面中呀
编码的问题,把<%@CODEPAGE="65001"%>去掉,然后在vs的“文件--高级保存选项--在编码中拉到最上面,选择“UTF-8带签名””试试
#30
我在dreamweaver页面属性里面重新加载utf-8不行,又一个字一个字的重新输入的汉字还是不行~~你这个办法倒是很灵验!谢谢!!!
#31
+1..
你说的问题都可以用传给父页面的方法。然后在父页面处理即可。parent.test(value);
#32
已经没有乱码了,现在一放进隐藏层就出问题,正找原因~~
嗯,又把代码放回aspx页面中了~~~
嗯,又把代码放回aspx页面中了~~~
#33
哈哈,终于结贴了!谢谢大家!
尤其感谢crying_boy!没能给够你100分,你随便顶一下这两个帖子,我都结给你吧:
http://topic.csdn.net/u/20120519/00/601bcc72-2e3e-4aeb-b326-38c30c2403fa.html
http://topic.csdn.net/u/20121014/15/0339af91-b2a0-4a8b-93c3-04b39d8c93e4.html
当然,能解决问题更好!再次表示感谢!
尤其感谢crying_boy!没能给够你100分,你随便顶一下这两个帖子,我都结给你吧:
http://topic.csdn.net/u/20120519/00/601bcc72-2e3e-4aeb-b326-38c30c2403fa.html
http://topic.csdn.net/u/20121014/15/0339af91-b2a0-4a8b-93c3-04b39d8c93e4.html
当然,能解决问题更好!再次表示感谢!
#1
不能这样写 只能创建节点 自己页面建立script节点也要创建 子父没影响
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'a.js';
head.appendChild(script);
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'a.js';
head.appendChild(script);
#2
如果你是要执行父窗口的函数,
比如:父窗口有一个函数:test
parent.test();//即可执行,且有参数时一样可以传入参数执行
如果你是要修改父窗口的一个变量的值
比如:父窗口有一个全局变量:_global
parent._global='我被子页面修改了值';//则在父窗口应用到此变量的值被修改
比如:父窗口有一个函数:test
parent.test();//即可执行,且有参数时一样可以传入参数执行
如果你是要修改父窗口的一个变量的值
比如:父窗口有一个全局变量:_global
parent._global='我被子页面修改了值';//则在父窗口应用到此变量的值被修改
#3
parent用于框架 建议 将parent换成opener试试
#4
这是分享按钮的变量。腾讯的可以替换,但新浪、百度的没有替换:
子页面:parent._ga2='我被子页面修改了值'
父页面:
<script type="text/javascript">
var _ga2="123"
</script>
以下是新浪分享,结果依旧是定义的“123”:
<script type="text/javascript" charset="utf-8">
(function(){
var _w = 106 , _h = 24;
var param = {
url:location.href,
type:'5',
title:_ga2+'…', /**分享的文字内容(可选,默认为所在页面的title)*/
rnd:new Date().valueOf()
}
var temp = [];
for( var p in param ){
temp.push(p + '=' + encodeURIComponent( param[p] || '' ) )
}
document.write('<iframe allowTransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?' + temp.join('&') + '" width="'+ _w+'" height="'+_h+'"></iframe>')
})()
</script>
以下是腾讯分享,变量正常替换为:“我被子页面修改了值”:
<script type="text/javascript">
function postToWb(){
var _t = _ga2+'…';//标题和描述信息
var metainfo = document.getElementsByTagName("meta");
for(var metai = 0;metai < metainfo.length;metai++){
if((new RegExp('description','gi')).test(metainfo[metai].getAttribute("name"))){
_t = metainfo[metai].attributes["content"].value;
}
}
// _t = document.title+_t;//请在这里添加你自定义的分享内容
if(_t.length > 120){
_t= _t.substr(0,117)+'...';
}
_t = encodeURI(_t);
var _u = 'http://share.v.t.qq.com/index.php?c=share&a=index&url='+_url+'&appkey='+_appkey+'&pic='+_pic+'&assname='+_assname+'&title='+_t;
window.open( _u,'', 'width=700, height=680, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, location=yes, resizable=no, status=no' );
}
</script>
百度分享,结果也是一开始定义的“123”:
<script type="text/javascript">
var bds_config = {'bdText':_ga2+'…'};
document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?t=" + new Date().getHours();
</script>
是我写错了?还是别的原因?腾讯通过了,新浪和百度为什么不行?
腾讯是:
=_ga2+'…';
新浪、百度是:
:_ga2+'…';
#5
你那已经写死了,更改变量的值没有任何作用
放弃document.write,变更为在一个指定的div中输出。比如:<div id="_bdShares"></div>
然后将那个输出分享的代码封装成一个函数[比如函数名为:myBdShares],将_ga2做为函数的参数就是了
在子页面使用:parent.myBdShares(参数值)去调用它,使其重新输出即可
放弃document.write,变更为在一个指定的div中输出。比如:<div id="_bdShares"></div>
然后将那个输出分享的代码封装成一个函数[比如函数名为:myBdShares],将_ga2做为函数的参数就是了
在子页面使用:parent.myBdShares(参数值)去调用它,使其重新输出即可
#6
都和你的腾讯分享代码一样。使用function将功能代码封装起来。然后在子页面调用,使其重新生成新的代码就是了
你自己有一个例子成功了,其他的照着改就是了
你自己有一个例子成功了,其他的照着改就是了
#7
我的基础很差,试过类似<div id="_bdShares"></div>的办法,但是出错了。而且也不知道怎样封装、、、
可以麻烦你用我上面的代码写个例子吗?
可以麻烦你用我上面的代码写个例子吗?
#8
百度分享,你应该可以在子页面这么写:
parent.bds_config = {'bdText':_ga2+'…'};
parent.document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?t=" + new Date().getHours();
#9
这样写没有效果,显示的还是一开始定义的123
#10
新浪分享:
将原来的代码改为:
试试
将原来的代码改为:
<div id="_sinaShares"></div>
<script type="text/javascript" charset="utf-8">
function sinaShares(){
var _w = 106 , _h = 24;
var param = {
url:location.href,
type:'5',
title:_ga2+'…', /**分享的文字内容(可选,默认为所在页面的title)*/
rnd:new Date().valueOf()
}
var temp = [];
for( var p in param ){
temp.push(p + '=' + encodeURIComponent( param[p] || '' ) )
};
document.getElementById("_sinaShares").innerHTML='<iframe allowTransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?' + temp.join('&') + '" width="'+ _w+'" height="'+_h+'"></iframe>';
};
sinaShares();
</script>
//子页面想修改变量值后调用的话:
parent._ga2='111111111';
parent.sinaShares();
试试
#11
parent.bds_config = {'bdText':'1111111111111111…'};
parent.document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?t=" + new Date().getHours();
这样如果没效果的话,那就是有可能你百度分享的代码还有其他关联的地方没搞清楚
#12
差不多就这意思吧。自己参考着修改,调试吧
#13
百度分享没有值,新浪还是原来的123?!
#14
好,我再好好研究一番~~基础太差了~~
谢谢你的耐心能解答,无以回报,不管能不能解决,我先把分值加到100。
谢谢你的耐心能解答,无以回报,不管能不能解决,我先把分值加到100。
#15
新浪分享无效的话,改成下面的试试呗
上面是父页面中的代码
子页面直接传参调用
parent.sinaShares('aaaaaabbbbbb');
<div id="_sinaShares"></div>
<script type="text/javascript" charset="utf-8">
function sinaShares(a){
var _w = 106 , _h = 24;
var param = {
url:location.href,
type:'5',
title:a+'…', /**分享的文字内容(可选,默认为所在页面的title)*/
rnd:new Date().valueOf()
}
var temp = [];
for( var p in param ){
temp.push(p + '=' + encodeURIComponent( param[p] || '' ) )
};
document.getElementById("_sinaShares").innerHTML='<iframe allowTransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?' + temp.join('&') + '" width="'+ _w+'" height="'+_h+'"></iframe>';
};
sinaShares(_ga2);
</script>
上面是父页面中的代码
子页面直接传参调用
parent.sinaShares('aaaaaabbbbbb');
#16
你在父页面中随便写个函数
function testExec(){
alert('调用成功')
}
然后在要刷新新浪分享的子页面中使用:parent.testExec()。看看是不是调用成功了
如果子页面是使用iframe内嵌的话,应该是没有问题的
function testExec(){
alert('调用成功')
}
然后在要刷新新浪分享的子页面中使用:parent.testExec()。看看是不是调用成功了
如果子页面是使用iframe内嵌的话,应该是没有问题的
#17
不好意思 你这个方法好像只在iframe子页面有效吧,我用的是window.open也遇到了类似的问题,原来用window.opener可以,不过chrome不支持,无奈只好找别的方法,parent好像在window.open中无效的,请问有别的方法解决这个问题吗?
#18
腾讯没问题,新浪和百度总也弄不好,我把全部代码发上来你帮着看看好吗?
多了个sj的图片变量,同样在腾讯显示,新浪和百度不行(百度图片分享效果在网易按钮里看着方便):
父页面:
iframe子页面3.aspx:
多了个sj的图片变量,同样在腾讯显示,新浪和百度不行(百度图片分享效果在网易按钮里看着方便):
父页面:
<%@CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<script type="text/javascript">
var _ga2="全局变量_ga2"
var sj="全局变量sj"
function testExec(){
alert('调用成功')
}
</script>
<div id="Layer1" style="width:100%; height:100px; position:absolute; background-color: #FF00FF; visibility: hidden; left: 260px; top: 60px;">DIV返回:
<div id="aa" name="aa">此处显示 id "aa" 的内容</div>
<table width="500" align="center">
<tr align="center">
<td colspan="2">
<div align="center" id="bdshare" class="bdshare_t bds_tools get-codes-bdshare">
<span class="bds_more">分享到:</span>
<a class="bds_tsohu">搜狐微博</a>
<a class="bds_t163">网易微博</a>
<a class="bds_douban">豆瓣网</a>
<a class="bds_qzone">QQ空间</a>
<a class="bds_renren">人人网</a>
</div>
<script type="text/javascript" id="bdshare_js" data="type=tools&uid=256631" ></script>
<script type="text/javascript" id="bdshell_js"></script>
<script type="text/javascript">
var bds_config = {'bdText':_ga2+'…','bdPic':'<%="http://csdnimg.cn/www/images/csdnindex_"+sj+".gif"%>'};
document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?t=" + new Date().getHours();
</script>
</td>
</tr>
<tr align="center">
<td>
<script type="text/javascript" charset="utf-8">
(function(){
var _w = 106 , _h = 24;
var param = {
url:location.href,
type:'5',
count:'', /**是否显示分享数,1显示(可选)*/
appkey:'', /**您申请的应用appkey,显示分享来源(可选)*/
title:_ga2+'…', /**分享的文字内容(可选,默认为所在页面的title)*/
pic:'http://csdnimg.cn/www/images/csdnindex_'+sj+'.gif', /**分享图片的路径(可选)*/
ralateUid:'', /**关联用户的UID,分享微博会@该用户(可选)*/
language:'zh_cn', /**设置语言,zh_cn|zh_tw(可选)*/
rnd:new Date().valueOf()
}
var temp = [];
for( var p in param ){
temp.push(p + '=' + encodeURIComponent( param[p] || '' ) )
}
document.write('<iframe allowTransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?' + temp.join('&') + '" width="'+ _w+'" height="'+_h+'"></iframe>')
})()
</script> </td>
<td>
<a href="javascript:void(0)" onclick="postToWb();return false;" class="tmblog"><img src="http://v.t.qq.com/share/images/s/b24.png" border="0" alt="转播到腾讯微博"></a>
<script type="text/javascript">
function postToWb(){
var _url = encodeURIComponent(document.location);
var _assname = encodeURI("");//你注册的帐号,不是昵称
var _appkey = encodeURI("");//你从腾讯获得的appkey
var _pic = encodeURI('http://csdnimg.cn/www/images/csdnindex_'+sj+'.gif');//(例如:var _pic='图片url1|图片url2|图片url3....)
var _t = _ga2+'…';//标题和描述信息
var metainfo = document.getElementsByTagName("meta");
for(var metai = 0;metai < metainfo.length;metai++){
if((new RegExp('description','gi')).test(metainfo[metai].getAttribute("name"))){
_t = metainfo[metai].attributes["content"].value;
}
}
// _t = document.title+_t;//请在这里添加你自定义的分享内容
if(_t.length > 120){
_t= _t.substr(0,117)+'...';
}
_t = encodeURI(_t);
var _u = 'http://share.v.t.qq.com/index.php?c=share&a=index&url='+_url+'&appkey='+_appkey+'&pic='+_pic+'&assname='+_assname+'&title='+_t;
window.open( _u,'', 'width=700, height=680, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, location=yes, resizable=no, status=no' );
}
</script> </td>
</tr>
</table>
</div>
<iframe src="3.aspx" name="i2" scrolling="auto"></iframe>
<form action="3.aspx" method="post" name="form1" target="i2" id="form1">
<textarea name="te" cols="" rows="">36</textarea>
<input type="submit" name="Submit" value="提交" />
</form>
</body>
</html>
iframe子页面3.aspx:
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="utf-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<%
string re=Request.Form["te"];
string sj="logo";
%>
<%="结果:"+re%>
<script>
<% if (!String.IsNullOrEmpty(re))
{%>
parent.document.getElementById("aa").innerHTML= '返回:<%=re.Replace("\r\n","<br/>").Replace("'","\\'")%>'
parent.document.getElementById("Layer1").style.visibility=""//显示
parent._ga2='<%=re.Replace("\r\n","").Replace("'","\\'")%>';
parent.sj='<%=sj%>';
parent.testExec()
<%}%>
</script>
</body>
</html>
#19
父页面:
3.aspx
一次加载是可以控制的。但不知道你是不是想提交表单后动态修改。估计百度分享可能有问题
其他的自己组织吧
<script type="text/javascript">
var _ga2="全局变量_ga2"
var sj="全局变量sj"
</script>
<table width="500" align="center">
<tr align="center">
<td colspan="2">
<div align="center" id="bdshare" class="bdshare_t bds_tools get-codes-bdshare">
<span class="bds_more">分享到:</span>
<a class="bds_tsohu">搜狐微博</a>
<a class="bds_t163">网易微博</a>
<a class="bds_douban">豆瓣网</a>
<a class="bds_qzone">QQ空间</a>
<a class="bds_renren">人人网</a>
</div>
<script type="text/javascript" id="bdshare_js" data="type=tools&uid=256631" ></script>
<script type="text/javascript" id="bdshell_js"></script>
<script type="text/javascript">
var bds_config;
function myBdShares(a){
bds_config = {'bdText':a+'…','bdPic':'1.gif'};
//'bdPic':<%="http://csdnimg.cn/www/images/csdnindex_"+sj+".gif"%>这算什么写法
//'bdPic':'http://csdnimg.cn/www/images/csdnindex_'+sj+'.gif'才对吧?
document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?t=" + new Date().getHours();
};
//默认时,先不要调用百度分享;百度分享可能是一次性加载的,生成后不能再更改
</script>
</td>
</tr>
<tr align="center">
<td>
<div id="_sinaShares"></div>
<script type="text/javascript" charset="utf-8">
function sinaShares(a){
var _w = 106 , _h = 24;
var param = {
url:location.href,
type:'5',
title:a+'…', /**分享的文字内容(可选,默认为所在页面的title)*/
rnd:new Date().valueOf()
}
var temp = [];
for( var p in param ){
temp.push(p + '=' + encodeURIComponent( param[p] || '' ) )
};
document.getElementById("_sinaShares").innerHTML='<iframe allowTransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?' + temp.join('&') + '" width="'+ _w+'" height="'+_h+'"></iframe>';
};
sinaShares(_ga2);
</script>
</td>
<td>
<a href="javascript:void(0)" onclick="postToWb();return false;" class="tmblog"><img src="http://v.t.qq.com/share/images/s/b24.png" border="0" alt="转播到腾讯微博"></a>
<script type="text/javascript">
function postToWb(){
var _url = encodeURIComponent(document.location);
var _assname = encodeURI("");//你注册的帐号,不是昵称
var _appkey = encodeURI("");//你从腾讯获得的appkey
var _pic = encodeURI('http://csdnimg.cn/www/images/csdnindex_'+sj+'.gif');//(例如:var _pic='图片url1|图片url2|图片url3....)
var _t = _ga2+'…';//标题和描述信息
var metainfo = document.getElementsByTagName("meta");
for(var metai = 0;metai < metainfo.length;metai++){
if((new RegExp('description','gi')).test(metainfo[metai].getAttribute("name"))){
_t = metainfo[metai].attributes["content"].value;
}
}
if(_t.length > 120){
_t= _t.substr(0,117)+'...';
}
_t = encodeURI(_t);
var _u = 'http://share.v.t.qq.com/index.php?c=share&a=index&url='+_url+'&appkey='+_appkey+'&pic='+_pic+'&assname='+_assname+'&title='+_t;
window.open( _u,'', 'width=700, height=680, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, location=yes, resizable=no, status=no' );
}
</script> </td>
</tr>
</table>
<iframe src="3.aspx" name="i2" id="i2" scrolling="auto"></iframe>
<form method="post" name="form1" target="i2" id="form1">
<textarea name="te" cols="" rows="">36</textarea>
<input type="submit" name="Submit" value="提交" />
</form>
3.aspx
<script type="text/javascript">
parent.myBdShares('我被子页面修改了值--百度分享');
parent.sinaShares('我被子页面修改了值--新浪分享')
</script>
一次加载是可以控制的。但不知道你是不是想提交表单后动态修改。估计百度分享可能有问题
其他的自己组织吧
#20
window.top.title = '<%=ga2()%>'
就这么简单
就这么简单
#21
parent.document.getElementById("si").innerHTML= '<script type="text/javascript" charset="utf-8">title:'<%=ga2()%>'</' + 'script>'
这样试试
这样试试
#22
学习了 这个浮动帧位置 太蛋疼了
#23
思路应该是对的,但是总出现乱码。两个页面都是utf-8,重新载入也不行!后面的调试一直没弄呢,头大啊~~~
另外20楼、21楼的办法行不通!
另外20楼、21楼的办法行不通!
#24
。。。。还在纠结??
那我就多说两句
你总体的解决思路我就觉得不好,提供个思路参数一下
1:页面中有一个定义了style="position:absolute"的层,里面装载了一个iframe,iframe中包含你那些分享
2:需要使用分享时,弹出那个层,并定好位,将iframe中需要的参数附加给iframe.src中,比如[src="share.aspx?title=我被修改了值&sj=1111"]
3:在share.aspx中根据传入的参数,生成你需要的分享代码
那我就多说两句
你总体的解决思路我就觉得不好,提供个思路参数一下
1:页面中有一个定义了style="position:absolute"的层,里面装载了一个iframe,iframe中包含你那些分享
2:需要使用分享时,弹出那个层,并定好位,将iframe中需要的参数附加给iframe.src中,比如[src="share.aspx?title=我被修改了值&sj=1111"]
3:在share.aspx中根据传入的参数,生成你需要的分享代码
#25
思路参数=思路参考。。。。。手误,手误
#26
也还没睡啊,辛苦了!
简单测试通过了,理论上应该行得通!但是现在乱码最头疼,家里没有装着VS,明天去单位重新生成新的aspx页面试试。没了乱码再试试提交表单传递多个变量。现在似乎一增加那个隐藏层就出问题不能正常传递!
你刚才说的思路,那个iframe调试好以后会设为不可见,提交显示隐藏层(再加个关闭——也就是重新隐藏的链接)就能近似达到无刷新提交的效果。不过get传递变量有长度限制,只能用post。
不早了,明天生成新页面重新再试~~
晚安!
简单测试通过了,理论上应该行得通!但是现在乱码最头疼,家里没有装着VS,明天去单位重新生成新的aspx页面试试。没了乱码再试试提交表单传递多个变量。现在似乎一增加那个隐藏层就出问题不能正常传递!
你刚才说的思路,那个iframe调试好以后会设为不可见,提交显示隐藏层(再加个关闭——也就是重新隐藏的链接)就能近似达到无刷新提交的效果。不过get传递变量有长度限制,只能用post。
不早了,明天生成新页面重新再试~~
晚安!
#27
今天用VS新生成了aspx页面(原来是dreamweaver生成的),还是有乱码,没想到这么难解决!
放进aspx.cs也不行:CS1012: 字符文本中的字符太多(而且显示的字符是乱码):行 11: parent.myBdShares('鎴戣瀛愰〉闈慨鏀逛簡鍊?-鐧惧害鍒嗕韩');
还有,分享按钮本应该在父页面显示,为什么一提交也在iframe中的2.aspx中显示了?
2.asp
2.aspx
2.aspx.cs
放进aspx.cs也不行:CS1012: 字符文本中的字符太多(而且显示的字符是乱码):行 11: parent.myBdShares('鎴戣瀛愰〉闈慨鏀逛簡鍊?-鐧惧害鍒嗕韩');
还有,分享按钮本应该在父页面显示,为什么一提交也在iframe中的2.aspx中显示了?
2.asp
<%@CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<script type="text/javascript">
var _ga2="全局变量_ga2"
var sj="全局变量sj"
</script>
<table width="500" align="center">
<tr align="center">
<td colspan="2">
<div align="center" id="bdshare" class="bdshare_t bds_tools get-codes-bdshare">
<span class="bds_more">分享到:</span>
<a class="bds_tsohu">搜狐微博</a>
<a class="bds_t163">网易微博</a>
<a class="bds_douban">豆瓣网</a>
<a class="bds_qzone">QQ空间</a>
<a class="bds_renren">人人网</a>
</div>
<script type="text/javascript" id="bdshare_js" data="type=tools&uid=256" ></script>
<script type="text/javascript" id="bdshell_js"></script>
<script type="text/javascript">
var bds_config;
function myBdShares(a){
bds_config = {'bdText':a+'…','bdPic':'1.gif'};
//'bdPic':<%="http://csdnimg.cn/www/images/csdnindex_"+sj+".gif"%>这算什么写法
//'bdPic':'http://csdnimg.cn/www/images/csdnindex_'+sj+'.gif'才对吧?
document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?t=" + new Date().getHours();
};
//默认时,先不要调用百度分享;百度分享可能是一次性加载的,生成后不能再更改
</script>
</td>
</tr>
<tr align="center">
<td>
<div id="_sinaShares"></div>
<script type="text/javascript" charset="utf-8">
function sinaShares(a){
var _w = 106 , _h = 24;
var param = {
url:location.href,
type:'5',
title:a+'…', /**分享的文字内容(可选,默认为所在页面的title)*/
rnd:new Date().valueOf()
}
var temp = [];
for( var p in param ){
temp.push(p + '=' + encodeURIComponent( param[p] || '' ) )
};
document.getElementById("_sinaShares").innerHTML='<iframe allowTransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?' + temp.join('&') + '" width="'+ _w+'" height="'+_h+'"></iframe>';
};
sinaShares(_ga2);
</script>
</td>
<td>
<a href="javascript:void(0)" onclick="postToWb();return false;" class="tmblog"><img src="http://v.t.qq.com/share/images/s/b24.png" border="0" alt="转播到腾讯微博"></a>
<script type="text/javascript">
function postToWb(){
var _url = encodeURIComponent(document.location);
var _assname = encodeURI("");//你注册的帐号,不是昵称
var _appkey = encodeURI("");//你从腾讯获得的appkey
var _pic = encodeURI('http://csdnimg.cn/www/images/csdnindex_'+sj+'.gif');//(例如:var _pic='图片url1|图片url2|图片url3....)
var _t = _ga2+'…';//标题和描述信息
var metainfo = document.getElementsByTagName("meta");
for(var metai = 0;metai < metainfo.length;metai++){
if((new RegExp('description','gi')).test(metainfo[metai].getAttribute("name"))){
_t = metainfo[metai].attributes["content"].value;
}
}
if(_t.length > 120){
_t= _t.substr(0,117)+'...';
}
_t = encodeURI(_t);
var _u = 'http://share.v.t.qq.com/index.php?c=share&a=index&url='+_url+'&appkey='+_appkey+'&pic='+_pic+'&assname='+_assname+'&title='+_t;
window.open( _u,'', 'width=700, height=680, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, location=yes, resizable=no, status=no' );
}
</script> </td>
</tr>
</table>
<iframe src="2.aspx" name="i2" id="i2" scrolling="auto"></iframe>
<form method="post" name="form1" target="i2" id="form1">
<textarea name="te" cols="" rows="">36</textarea>
<input type="submit" name="Submit" value="提交" />
</form>
</body>
</html>
2.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="2.aspx.cs" Inherits="_2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
</body>
</html>
2.aspx.cs
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
parent.myBdShares('我被子页面修改了值--百度分享');
parent.sinaShares('我被子页面修改了值--新浪分享');
}
}
#28
用记事本打开文件,另存为UTF-8试试
#29
。。。。
parent.myBdShares('我被子页面修改了值--百度分享');
parent.sinaShares('我被子页面修改了值--新浪分享');
居然这样直接写在了Page_Load中。。。。
你要写,也写在aspx页面中呀
编码的问题,把<%@CODEPAGE="65001"%>去掉,然后在vs的“文件--高级保存选项--在编码中拉到最上面,选择“UTF-8带签名””试试
parent.myBdShares('我被子页面修改了值--百度分享');
parent.sinaShares('我被子页面修改了值--新浪分享');
居然这样直接写在了Page_Load中。。。。
你要写,也写在aspx页面中呀
编码的问题,把<%@CODEPAGE="65001"%>去掉,然后在vs的“文件--高级保存选项--在编码中拉到最上面,选择“UTF-8带签名””试试
#30
我在dreamweaver页面属性里面重新加载utf-8不行,又一个字一个字的重新输入的汉字还是不行~~你这个办法倒是很灵验!谢谢!!!
#31
+1..
你说的问题都可以用传给父页面的方法。然后在父页面处理即可。parent.test(value);
#32
已经没有乱码了,现在一放进隐藏层就出问题,正找原因~~
嗯,又把代码放回aspx页面中了~~~
嗯,又把代码放回aspx页面中了~~~
#33
哈哈,终于结贴了!谢谢大家!
尤其感谢crying_boy!没能给够你100分,你随便顶一下这两个帖子,我都结给你吧:
http://topic.csdn.net/u/20120519/00/601bcc72-2e3e-4aeb-b326-38c30c2403fa.html
http://topic.csdn.net/u/20121014/15/0339af91-b2a0-4a8b-93c3-04b39d8c93e4.html
当然,能解决问题更好!再次表示感谢!
尤其感谢crying_boy!没能给够你100分,你随便顶一下这两个帖子,我都结给你吧:
http://topic.csdn.net/u/20120519/00/601bcc72-2e3e-4aeb-b326-38c30c2403fa.html
http://topic.csdn.net/u/20121014/15/0339af91-b2a0-4a8b-93c3-04b39d8c93e4.html
当然,能解决问题更好!再次表示感谢!