[英]Insert a paragraph from an external HTML page to another HTML page with Javascript
[英]Insert javascript from an external script into javascript in the HTML
我有一些來自外部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>
謝謝!
對我來說最簡單的方法是使用服務器端包含。 根據您的后端,您可以設置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";
.......
在JavaScript中,您可以隨時使用新值覆蓋變量,包括函數。
通過它的外觀,您可以用您自己的一個替換mediaTypeCheck
函數,然后調用原始函數。
例如
(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函數后發生,就可以從任何腳本加載上述內容。
你不能在JS中插入JS。 你可以做的是在DOM中插入另一個標簽,並為外部JS文件指定SRC。
您可以使用$.getScript(url)
直接插入js文件;
如果您將腳本作為文本,那么您可以創建腳本標記。
var script = docuent.createElement('script');
script.innerText = text;
document.getElementsByTagName('head')[0].appendChild(script);
在你的情況下的問題是你不能觸摸HTML中的腳本,所以我會說它不能在客戶端完成。
如果您至少可以觸摸腳本標記(而不是腳本本身),那么您可以添加自定義類型以在其執行之前對其進行操作,例如:
<script type="WaitForInsert">
你的問題看起來很奇怪,但似乎有可能。 嘗試我的快速/臟工作代碼並實現您自己的情況:
$(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');
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.