仅在存在查询字符串参数时初始化媒体播放器



我有一个SharePoint页面,该页面具有指向视频剪辑的超链接。单击链接将在覆盖窗口中播放视频(使用Silverlight)。如果不存在Silverlight运行时,它将显示"安装Silverlight"提示。当使用IsDlg=1查询字符串调用页面时,超链接被隐藏(在左导航栏中),仅显示主内容页面。但是我仍然会得到"安装silverlight"提示。我想在存在IsDlg=1时摆脱提示。

以下是页面上相关的JavaScript代码。我只有在不存在IsDlg=1时才对其进行了稍微修改以初始化媒体播放器。但是它无法正常工作。有什么想法吗?

// original code
 $(function () {
        mediaPlayer.createOverlayPlayer();
        mediaPlayer.attachToMediaLinks(document.getElementById('videoList'), ['wmv', 'avi', 'mp4']);
    });
// modified code
    $(function () {
        var field = 'IsDlg';
        var url = window.location.href;
        if (url.indexOf('?' + field + '=') != -1) {
        } else {
            mediaPlayer.createOverlayPlayer();
            mediaPlayer.attachToMediaLinks(document.getElementById('videoList'), ['wmv', 'avi', 'mp4']);
        }
    });

只要存在嵌入Silverlight控件的HTML,它将显示"安装Silverlight"对话框。如果您不希望对话框显示,则必须更改HTML源。您可以添加JavaScript代码以动态添加HTML,因此仅在必要时显示。该答案取决于您当前如何嵌入Silverlight控件。

编辑:您可以尝试这样的代码:

$(function () {
    if (window.location.search.indexOf('IsDlg=1') === -1) {
        $.getScript('/_layouts/mediaplayer.js', function () {
            mediaPlayer.createOverlayPlayer();
            mediaPlayer.attachToMediaLinks(document.getElementById('videoList'), ['wmv', 'avi', 'mp4']);
        });
    }
});

您的代码应该工作,因此您可能想调试其他可能的问题。

$(document).ready(function () {     // add explicit wait until dom ready
  console.log(window.location.search);   // just to check that the parameter is present
  if(window.location.search.indexOf("IsDlg=1") < 0){   // testing the query string part only
    mediaPlayer.createOverlayPlayer();
    mediaPlayer.attachToMediaLinks(document.getElementById('videoList'), ['wmv', 'avi', 'mp4']);
   }
});

尝试一下,看看您如何上升。

最新更新