mirror of
https://github.com/shaka-project/shaka-player.git
synced 2026-06-17 16:26:39 +03:00
dbbbbd160f
The loader script for the demo uses document.write to add script tags. This is not ideal, and currently generates these warnings in Chrome: [Violation] Parser was blocked due to document.write(<script>) [Violation] Avoid using document.write(). This replaces the import mechanism and hooks it into Closure library. This also fixes uncompiled mode on Cobalt, which does not have document.write. (http://cobalt.foo/) Fixes: 37246436 Change-Id: I4b8acf41edb314be359bca42d224112020c30709
81 lines
2.9 KiB
JavaScript
81 lines
2.9 KiB
JavaScript
/**
|
|
* @license
|
|
* Copyright 2016 Google Inc.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
|
|
/**
|
|
* Loads the library. Chooses compiled or debug version of the library based
|
|
* on the presence or absence of the URL parameter "compiled".
|
|
*
|
|
* This dynamic loading process is not necessary in a production environment,
|
|
* but greatly simplifies the process of switching between compiled and
|
|
* uncompiled mode during development.
|
|
*
|
|
* This is used in the provided demo app, but can also be used to load the
|
|
* uncompiled version of the library into your own application environment.
|
|
*/
|
|
(function() { // anonymous namespace
|
|
// The sources may be in a different folder from the app.
|
|
// Compute the base URL for all library sources.
|
|
var currentScript = document.currentScript ||
|
|
document.scripts[document.scripts.length - 1];
|
|
var loaderSrc = currentScript.src;
|
|
var baseUrl = loaderSrc.split('/').slice(0, -1).join('/') + '/';
|
|
|
|
function loadRelativeScript(src) {
|
|
importScript(baseUrl + src);
|
|
}
|
|
|
|
function importScript(src) {
|
|
var script = document.createElement('script');
|
|
script.type = 'text/javascript';
|
|
script.src = src;
|
|
script.defer = true;
|
|
// Setting async = false is important to make sure the script is imported
|
|
// before the 'load' event fires.
|
|
script.async = false;
|
|
document.head.appendChild(script);
|
|
}
|
|
window.CLOSURE_IMPORT_SCRIPT = importScript;
|
|
|
|
var fields = location.search.substr(1);
|
|
fields = fields ? fields.split(';') : [];
|
|
var fragments = location.hash.substr(1);
|
|
fragments = fragments ? fragments.split(';') : [];
|
|
var combined = fields.concat(fragments);
|
|
|
|
// Very old browsers do not have Array.prototype.indexOf.
|
|
var compiledMode = false;
|
|
for (var i = 0; i < combined.length; ++i) {
|
|
if (combined[i] == 'compiled') {
|
|
compiledMode = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (compiledMode) {
|
|
// This contains the entire library.
|
|
loadRelativeScript('../dist/shaka-player.compiled.js');
|
|
} else {
|
|
// In non-compiled mode, we load the closure library and the generated deps
|
|
// file to bootstrap the system. goog.require will load the rest.
|
|
loadRelativeScript('../third_party/closure/goog/base.js');
|
|
loadRelativeScript('../dist/deps.js');
|
|
// This file contains goog.require calls for all exported classes.
|
|
loadRelativeScript('../shaka-player.uncompiled.js');
|
|
}
|
|
})(); // anonymous namespace
|