2011年5月

Firefox和chrome的Media Player Plugin不触发PlayStateChange的解决办法

在网页里面插入了下面的播放器代码:

[code language="html"]
<OBJECT style="float:right;" id="MediaPlayer" width="192" height="216" CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" type="application/x-oleobject">
<PARAM NAME="URL" VALUE="mms://211.89.225.104/cnr001">
<PARAM NAME="SendPlayStateChangeEvents" VALUE="True">
<PARAM NAME="AutoStart" VALUE="False">
<PARAM name="uiMode" value="mini">
<PARAM name="PlayCount" value="1">
<EMBED TYPE="application/x-mplayer2" CLSID={6BF52A52-394A-11D3-B153-00C04F79FAA6} SRC="mms://211.89.225.104/cnr001" ID="MediaPlayer" NAME="MediaPlayer" WIDTH=200 HEIGHT=50 VOLUME=-1 RATE=1.0></EMBED>
</OBJECT>[/code]

chrome里面怎么都不会触发playStateChange事件,找了很久的资料,原来要这样才能捕获这个事件:

function OnDSPlayStateChangeEvt(state){
//这个参数state你就可以用了,就是页面中的播放器的状态
//handler
}

OnDSPlayStateChangeEvt没有用到播放器的ID什么的,不知道放两个播放器会是一种什么情况。还有一些其它的事件和这个类同OnDSPlayStateChangeEvt,把红色的换成其它事件的名字就行了。很诡异的调用。

curl获取的header中出现HTTP/1.1 100 continue的问题

用curl获取返回结果的头的第一行出现了“

HTTP/1.1 100 continue

”,之后才是HTTP/1.1 200 OK之类的真实状态。出现这个问题是因为curl默认发送了这样的一个header:“Expect: 100-continue”,我们只需要把这个header重写下就可以了。

curl_setopt( $curl_handle, CURLOPT_HTTPHEADER, array( 'Expect:' ) );

加一个Expect:后面为空,这样就把curl默认发送的那个header覆盖了,ok,问题解决。

json_encode转换中文为null的问题

把要转换的数组先urlencode一下就好了,json化后再urldecode下。

[code language="php"]
<?php

$data = array(
'game' => '冰火国度',
'name' => '刺之灵',
'country' => '冰霜国',
'level' => 45
);

/**
* 处理json_encode乱码
*/
$newData = array();
foreach( $data as $key => $value )
{
$newData[ $key ] = urlencode( $value );
}
echo urldecode( json_encode( $newData ) );

?>
[/code]

VS2008里调试出错:打开的 URL 的 IIS 辅助进程当前没有运行

把网站设置到IIS里面运行,然后F5调试,出现如下的错误:

无法在 Web 服务器上启动调试。打开的 URL 的 IIS 辅助进程当前没有运行。

英文描述:

Unable to start debugging on the Web server.  The IIS worker process for the launched URL is not currently running.

折腾了半天,还是在国外的网站上面找到了解决方法,原来是因为我的电脑出现了两个本地IP,在IIS里建立网站的时候就随便选了一个IP,只要把这个IP地址选择为“全部未分配”,就是“*”就可以调试了。就是绑定域名那里选择IP的时候不能用固定的,不选择IP就行了。