为什么VS2008平台下,HTML不能引用外部js文件啊

我在vs2008平台下,创建一个基于CDHtmlDialog的对话框工程,然后再HTML文件中引入外部js文件,就是不成功啊,哪位大神指点一下。
代码如下:

    <div id="playercontainer"></div>
    <script type="text/javascript" src="player/cyberplayer.js"></script>
    <script type="text/javascript">
        var player = cyberplayer("playercontainer").setup({
            width: 854,
            height: 480,
            stretching: "uniform",
            file: "http://demo-video.bj.bcebos.com/AdrenalineRush.m3u8",
            autostart: true,
            repeat: false,
            volume: 100,
            controls: true,
            ak: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' // 公有云平台注册即可获得accessKey
        });
    </script>

4个回答

把所有使用的资源(图片,CSS,JS等),统统放到HTML资源类型下,引用的时候写成 res:/#资源号就可以了

zhanghongquan
zhanghongquan 这样试了不行啊,有demo吗,发一个给我看看,谢谢了!
大约 4 年之前 回复

或者参考CDHtmlDialog加载图片使用相对路径的有关问题

typedef enum InnerFileType
{
    FileTypeJavaScript,
    FileTypeCSS,
    FilePathBackground,
};

/*设置外链JS,CSS文件或背景图片文件路径,bRelative为TRUE时,filePath指定为相对于可执行文件的路径,否则为绝对路径。如果设置了错误路径,会导致javascript运行出错,css无效。*/
BOOL CDhtmlHelp::SetJSOrCSSFilePath(InnerFileType type, LPCTSTR eleID, LPCTSTR filePath, BOOL bRelative /*= TRUE*/ )
{
    HRESULT hr;
    IHTMLElement *pEle;
    hr = m_pDhtmlDlg->GetElement( eleID, &pEle );
    if ( FAILED(hr) )
    {
        return FALSE;
    }
    CComBSTR name;
    if ( type == FileTypeJavaScript )
    {
        name = _T("src");
    }
    else if ( type == FileTypeCSS )
    {
        name = _T("href");
    }
    else if ( type == FilePathBackground)
    {
        name = _T("background");
    }
    else 
    {
        return FALSE;
    }

    TCHAR tszPath[MAX_PATH] = {0};
    if ( !bRelative )
    {
        _tcscpy(tszPath,filePath);
    }
    else
    {
        if ( 0 == GetModuleFileName( NULL, tszPath, MAX_PATH ) )
        {
            return FALSE;
        }

        //取exe文件所在目录
        TCHAR *pItalic = _tcsrchr( tszPath, _T('\\') );
        if ( pItalic == NULL )
        {
            return FALSE;
        }
        pItalic++;//指向斜杠后面一个字符
        memset( pItalic, _T('\0'), _tcslen(pItalic)*sizeof(TCHAR) );
        _tcscat( tszPath, filePath );
    }

    CComBSTR value(tszPath);
    VARIANT str;
    str.vt = VT_BSTR;
    str.bstrVal = value;
    hr = pEle->setAttribute( name, str,0 );
    if ( FAILED(hr) )
    {
        return FALSE;
    }
    return TRUE;
}

你的相对路径是否正确,先看你的html在本地是否可以正确加载,然后就是注意CDhtmlDialog加载后,html的当前路径

zhanghongquan
zhanghongquan 路劲是正确的啊,直接在网页中打开都正常
大约 4 年之前 回复

参考CDHtmlDialog 中 html 资源加载 css 样式,js 脚本,图片

若想在 CDHtmlDialog 的 html 中加载 css , js ,图片文件,必须把这些文件引入资源文件,然后把 html 文件中的链接转换成对应的资源 ID 的数值.

添加步骤:
•第一步: 添加想要添加的 css , js ,图片文件到资源文件中.
•第二步:找到添加的文件的资源 ID 对应的数值.
•第三步:在引用文件时候,把链接地址以 "res:/资源文件添加到的所属文件结构/#资源ID" 来写

然后在资源文件中资源 ID 对应的数值:

#define IDR_CUS1 131
#define IDR_CUS2 132
#define IDR_CUS3 133

在 html 文件中引用导入到资源文件中的 css,js,图片 文件:

<SCRIPT src="res:/CUS/#131" type=text/javascript></SCRIPT>
<link type="text/css" rel="stylesheet" href="res:/CUS/#132" />
<img src="res:/CUS/#133">
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问