我有一些来自外部JS文件的JS,我希望在HTML文件的JS函数中插入。我无法触摸HTML文件中的JS脚本,所以我想知道这个方法是否可以完成。
这是我想在HTML文件中插入JS函数的JS。
// FIRST JS TO INSERT
if (OS == "mobile"){
killVideoPlayer();
}
// SECOND JS TO INSERT
if (OS == "mobile"){
loadHtmlFiveVideo();
if (!document.all){
flvPlayerLoaded = false;
}
}else {
loadVideoPlayer();
}
然后我想把它插入到这里。
<script>
function mediaTypeCheck() {
if (bsiCompleteArray[arrayIndex].mediaType == "video") {
// INSERT FIRST JS HERE
document.getElementById("bsi-video-wrap").style.display = "block";
document.getElementById('pngBsi').style.display = "block";
document.getElementById("frame_photo").style.display = "none";
document.getElementById("relativeFrame").style.display = "block";
document.getElementById("buy-me-photo-button-bsi").style.display = "none";
// INSTER SECOND JS HERE
loadVideoPlayer();
}
if (bsiCompleteArray[arrayIndex].mediaType == "photo") {
killVideoPlayer();
document.getElementById("bsi-video-wrap").style.display = "none";
document.getElementById('pngBsi').style.display = "block";
document.getElementById("relativeFrame").style.display = "block";
document.getElementById("frame_photo").style.display = "block";
document.getElementById("buy-me-photo-button-bsi").style.display = "block";
if (!document.all){
flvPlayerLoaded = false;
}
}
}
</script>
谢谢!
答案 0 :(得分:1)
过去对我来说最简单的方法就是使用服务器端包含。根据您的后端,您可以设置PHP或ASP页面或其他任何响应模仿“.js”的mime类型。
我不是一个PHP人,但你会做这样的事情:(如果我的语法不正确,请其他人修复它)
<?php
//adding this header will make your browser think that this is a real .js page
header( 'Content-Type: application/javascript' );
?>
//your normal javascript here
<script>
function mediaTypeCheck() {
if (bsiCompleteArray[arrayIndex].mediaType == "video") {
//here is where you would 'include' your first javascript page
<?php
require_once(dirname(__FILE__) . "/file.php");
?>
//now continue on with your normal javascript code
document.getElementById("bsi-video-wrap").style.display = "block";
document.getElementById('pngBsi').style.display = "block";
.......
答案 1 :(得分:1)
在JavaScript中,您可以随时使用新值覆盖变量,包括函数。
从外观上看,您可以将mediaTypeCheck
函数替换为您自己的函数,然后调用原始函数。
E.g。
(function(){
// keep track of the original mediaTypeCheck
var old_function = mediaTypeCheck;
// overwrite mediaTypeCheck with your wrapper function
mediaTypeCheck = function() {
if ( conditions ) {
// do whatever you need to, then ...
}
return old_function();
};
})();
以上内容可以从任何脚本加载,只要在定义了mediaTypeCheck函数后发生。
答案 2 :(得分:0)
你不能在JS中插入JS。您可以做的是在DOM中插入另一个标记,并为外部JS文件指定SRC。
答案 3 :(得分:0)
您可以使用$.getScript(url)
;
如果你有脚本作为文本,那么你可以创建脚本标记。
var script = docuent.createElement('script');
script.innerText = text;
document.getElementsByTagName('head')[0].appendChild(script);
答案 4 :(得分:0)
你的案例中的问题是你无法触及html中的脚本,所以我会说它不能在客户端完成。
如果您至少可以触摸脚本标记(而不是脚本本身),那么您可以添加自定义类型以在其执行之前对其进行操作,例如:
<script type="WaitForInsert">
答案 5 :(得分:0)
你的问题看起来很奇怪,但似乎有可能。尝试我的快速/脏工作代码并实现您自己的情况:
$(document.body).ready(function loadBody(){
var testStr = test.toString();
var indexAcc = testStr.indexOf("{");
var part1 = testStr.substr(0, indexAcc + 1);
var part2 = testStr.substr(indexAcc + 1, testStr.length - indexAcc - 2);
var split = part2.split(";");
split.pop();
split.splice(0,0, "alert('a')");
split.splice(split.length -1, 0, "alert('d')");
var newStr = part1 + split.join(";") + ";" + "}";
$.globalEval(newStr);
test();
}
function test(){
alert('b');
alert('c');
alert('e');
}