今天主要学习一下js与flash是如何通讯滴。
1、先学习一下
getURL(url, window, variables)
使用 getURL 语句,可以让指定的浏览器窗口,转向显示指定的URL地址。参数(url)指定要显示WEB页面文档的 URL 地址。参数(window)指定要要显示WEB页面文档的浏览器窗口,它可以是指定为自定义的窗口名称,也可以
如果想让它执行调用js函数执行,那么可以这样
on (release) {
getURL(\"JavaScript:alert('hello,world')\");
}
如果调用自定义的函数
on (release) {
getURL(\"JavaScript:aiqi('test')\");
}
那么html页面里要定义这个函数,比如
function aiqi(s){
alert(s);
}
1、先学习一下
getURL(url, window, variables)
使用 getURL 语句,可以让指定的浏览器窗口,转向显示指定的URL地址。参数(url)指定要显示WEB页面文档的 URL 地址。参数(window)指定要要显示WEB页面文档的浏览器窗口,它可以是指定为自定义的窗口名称,也可以
如果想让它执行调用js函数执行,那么可以这样
on (release) {
getURL(\"JavaScript:alert('hello,world')\");
}
如果调用自定义的函数
on (release) {
getURL(\"JavaScript:aiqi('test')\");
}
那么html页面里要定义这个函数,比如
function aiqi(s){
alert(s);
}
php中的正则表达式的preg_match_all可一次得出一二维数组用来多次匹配,比如:
preg_match_all('/<img src="([^"])">/','<img src="1.jpg"> <img src="2.jpg"> <img src="3.jpg">',$arr);
可得到这样一个数组:
Array
(
[0] => Array
(
[0] => <img src="1.jpg">
[1] => <img src="2.jpg">
[2] => <img src="3.jpg">
)
[1] => Array
(
[0] => 1.jpg
[1] => 2.jpg
[2] => 3.jpg
)
)
而同样的功能用js来实现,可能就要麻烦点,用匿名RexExp对象的exec方法只能匹配到第一个<img src="1.jpg">,网上最常见的就是用非匿名RegExp对象加循环进行多次匹配。
以下方法,使用匿名RegExp对象实现reg_match_all类似功能:
var arr=new Array();
arr[0]='<img src="1.jpg"> <img src="2.jpg"> <img src="3.jpg">'.match(/<img src="([^"])">/g);
arr[1]=new Array();
for(var i=0;i<arr[0].length;i++)
arr[1][i]=/<img src="([^"])">/.exec(arr[0][i]);
preg_match_all('/<img src="([^"])">/','<img src="1.jpg"> <img src="2.jpg"> <img src="3.jpg">',$arr);
可得到这样一个数组:
Array
(
[0] => Array
(
[0] => <img src="1.jpg">
[1] => <img src="2.jpg">
[2] => <img src="3.jpg">
)
[1] => Array
(
[0] => 1.jpg
[1] => 2.jpg
[2] => 3.jpg
)
)
而同样的功能用js来实现,可能就要麻烦点,用匿名RexExp对象的exec方法只能匹配到第一个<img src="1.jpg">,网上最常见的就是用非匿名RegExp对象加循环进行多次匹配。
以下方法,使用匿名RegExp对象实现reg_match_all类似功能:
var arr=new Array();
arr[0]='<img src="1.jpg"> <img src="2.jpg"> <img src="3.jpg">'.match(/<img src="([^"])">/g);
arr[1]=new Array();
for(var i=0;i<arr[0].length;i++)
arr[1][i]=/<img src="([^"])">/.exec(arr[0][i]);
要制作一个在线聊天的程序,在做最后的修饰时,需要对获得的信息即时滚动以保证用户总能看到最新消息。
聊天程序是基于AJAX设计的,没有用框架,消息容器是一个DIV,所以问题就在于如何控制DIV的滚动条。
网上有资料介绍说通过设置scrollTop属性来控制滚动条位置,具体可参见:
http://hi.baidu.com/chen1345789/blog/item/de727bfb45587b176d22eba1.html
但同样的代码拿到我这里却完全失效,又仔细查了下资料说XHTML标准下scrollTop的值恒为0,解决办法是使用document.documentElement.scrollTop代替document.body.scrollTop,讲了半天所解决的是整个页面的滚动条。这个方法我是用不了了,因为不是框架结构,所以不可能用body的滚动条控制浏览信息。
网上关于这个问题的资料很少,连CSDN上也说没有办法。
不死心,后来查DHTML手册得知DIV有个doScroll方法可以用来模拟滚动条点击,但很令人失望,到了我这里又是完全失效,难道又不被XHTML支持?
最后终于被我找到三种控制DIV内容滚动的方法:
方法一:
使用锚标记要滚动到的位置,然后通过click方法模拟点击滚动到锚所在位置
[codes=html]
<script language="javascript1.2" type="text/javascript">
function onGetMessage(context)
{
msg.innerHTML+=context;
msg_end.click();
}
</script>
<div style="width:500px;overflow:auto">
<div id="msg" style="overflow:hidden;width:480px;">
</div>
<div><a id="msg_end" name="1" href="#1"> </a></div>
</div>
[/codes]
方法二:
利用DIV的scrollIntoView方法,将最底端滚动到可视位置
[codes=html]
<script language="javascript1.2" type="text/javascript">
function onGetMessage(context)
{
msg.innerHTML+=context;
msg_end.scrollIntoView();
}
</script>
<div style="width:500px;overflow:auto">
<div id="msg" style="overflow:hidden;width:480px;">
</div>
<div id="msg_end" style="height:0px; overflow:hidden"> </div>
</div>
[/codes]
方法三:
这个比较复杂也比较灵活一点,就是利用DIV+JS+图片构造一个滚动条,当然了图片是怎么好看怎么用了。
主要部分就是外层的DIV加个overflow:hidden属性,通过js代码调整内层DIV的margin-left和margin-top来控制内容的滚动,由于上面两种方法已经可以满足需求,所以这种方法没具体做深究,有兴趣的可以试一下
后记:最后发现最初的obj.scrollTop=obj.scrollHeight;的方法也可以使用,最初没测试成功是因为DIV要有Height属性
聊天程序是基于AJAX设计的,没有用框架,消息容器是一个DIV,所以问题就在于如何控制DIV的滚动条。
网上有资料介绍说通过设置scrollTop属性来控制滚动条位置,具体可参见:
http://hi.baidu.com/chen1345789/blog/item/de727bfb45587b176d22eba1.html
但同样的代码拿到我这里却完全失效,又仔细查了下资料说XHTML标准下scrollTop的值恒为0,解决办法是使用document.documentElement.scrollTop代替document.body.scrollTop,讲了半天所解决的是整个页面的滚动条。这个方法我是用不了了,因为不是框架结构,所以不可能用body的滚动条控制浏览信息。
网上关于这个问题的资料很少,连CSDN上也说没有办法。
不死心,后来查DHTML手册得知DIV有个doScroll方法可以用来模拟滚动条点击,但很令人失望,到了我这里又是完全失效,难道又不被XHTML支持?
最后终于被我找到三种控制DIV内容滚动的方法:
方法一:
使用锚标记要滚动到的位置,然后通过click方法模拟点击滚动到锚所在位置
[codes=html]
<script language="javascript1.2" type="text/javascript">
function onGetMessage(context)
{
msg.innerHTML+=context;
msg_end.click();
}
</script>
<div style="width:500px;overflow:auto">
<div id="msg" style="overflow:hidden;width:480px;">
</div>
<div><a id="msg_end" name="1" href="#1"> </a></div>
</div>
[/codes]
方法二:
利用DIV的scrollIntoView方法,将最底端滚动到可视位置
[codes=html]
<script language="javascript1.2" type="text/javascript">
function onGetMessage(context)
{
msg.innerHTML+=context;
msg_end.scrollIntoView();
}
</script>
<div style="width:500px;overflow:auto">
<div id="msg" style="overflow:hidden;width:480px;">
</div>
<div id="msg_end" style="height:0px; overflow:hidden"> </div>
</div>
[/codes]
方法三:
这个比较复杂也比较灵活一点,就是利用DIV+JS+图片构造一个滚动条,当然了图片是怎么好看怎么用了。
主要部分就是外层的DIV加个overflow:hidden属性,通过js代码调整内层DIV的margin-left和margin-top来控制内容的滚动,由于上面两种方法已经可以满足需求,所以这种方法没具体做深究,有兴趣的可以试一下
后记:最后发现最初的obj.scrollTop=obj.scrollHeight;的方法也可以使用,最初没测试成功是因为DIV要有Height属性
1、IE与Firefox下实现方式不同,可通过以下方式兼容:
[codes=js]
function createXMLHttpRequest() {
var request = false;
if(window.XMLHttpRequest) {
request = new XMLHttpRequest();
if(request.overrideMimeType) {
request.overrideMimeType('text/xml');
}
} else if(window.ActiveXObject) {
var versions = ['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.7.0', 'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];
for(var i=0; i<versions.length; i++) {
try {
request = new ActiveXObject(versions[i]);
if(request) {
return request;
}
} catch(e) {
//alert(e.message);
}
}
}
return request;
}
[/codes]
2、避免进行跨与访问
若无法避免可通过服务器 对象 XMLHTTP进行中转
3、对于返回的responseXML,只在请求的URL能通过XML验证时才有效
4、responseXML.documentElement可得到根元素
5、getElementsByTagName的参数,ie支持多级标签如"body//div//a",firefox则不支持,"*"得到所有元素
[codes=js]
function createXMLHttpRequest() {
var request = false;
if(window.XMLHttpRequest) {
request = new XMLHttpRequest();
if(request.overrideMimeType) {
request.overrideMimeType('text/xml');
}
} else if(window.ActiveXObject) {
var versions = ['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.7.0', 'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];
for(var i=0; i<versions.length; i++) {
try {
request = new ActiveXObject(versions[i]);
if(request) {
return request;
}
} catch(e) {
//alert(e.message);
}
}
}
return request;
}
[/codes]
2、避免进行跨与访问
若无法避免可通过服务器 对象 XMLHTTP进行中转
3、对于返回的responseXML,只在请求的URL能通过XML验证时才有效
4、responseXML.documentElement可得到根元素
5、getElementsByTagName的参数,ie支持多级标签如"body//div//a",firefox则不支持,"*"得到所有元素









