我目前签约的地方不能使用 CMS 或 PHP,但他们希望我使用 HTML 和 JavaScript 构建类似 CMS 的东西。
我知道这听起来很荒谬,但这些天我不想再寻找另一份工作,他们是我曾经工作过的最好的人——曾经——而且我老了。
CMS 的概念之一是拥有可以在任何给定时间包含的全局文件。
结果,我尝试了 $.ajax、$.get 等...,但我遇到了访问 URI 被拒绝的问题以及尝试加载当前目录的一个目录级别的文件的那些事情。
我能够通过使用旧的 XMLHttpRequest/ActiveXObject 来加载要加载的 javascript 文件。
但是,已加载的 div 内的脚本无法调用。我收到“找不到变量:mFunc”的错误,这是已加载到 div 中的函数的名称。
这是我的html的代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>retrieve local file one level up</title>
<script type="text/javascript">
<!--
var createRequestObject = function(){
var req;
if(window.XMLHttpRequest){
// Firefox, Safari, Opera...
req = new XMLHttpRequest();
}else if(window.ActiveXObject){
// Internet Explorer 5+
req = new ActiveXObject("Microsoft.XMLHTTP");
}else{
alert('There was a problem creating the XMLHttpRequest object');
}
return req;
}
// Make the XMLHttpRequest object
var http = createRequestObject();
var sendRequestPost = function(){
var jscript = '../test.js';
// Open PHP script for requests
http.open('GET', jscript);
http.setRequestHeader('Content-Type', 'text/javascript');
http.onreadystatechange = handleResponsePost;
http.send(null);
var mT = setTimeout("mFunc()", 2000);
}
var handleResponsePost = function(){
if(http.readyState == 1){
document.getElementById('mDiv').innerHTML = "Please wait, loading... " ;
}else if(http.readyState == 4 && http.status == 200){
// Text returned from PHP script
var response = http.responseText;
document.getElementById('mDiv').innerHTML = response;
if(response){
// Update ajaxTest2 content
document.getElementById('mDiv').innerHTML = response;
}
}else if(http.readyState == 2){
document.getElementById('mDiv').innerHTML = http.responseText;
}else if(http.readyState == 3){
document.getElementById('mDiv').innerHTML = http.responseText;
}
}
-->
</script>
</head>
<body onload="javascript:sendRequestPost();">
<div id="mDiv"></div>
</body>
</html>
这是加载到 mDiv 中的 javascript:
<script type="text/javascript">
<!--
var mFunc = function(){
var mScript = document.createElement("script");
mScript.setAttribute("type","text/javascript");
var data = 'alert("gets here");'
mScript.text = data;
var head = document.getElementsByTagName("head")[0];
head.appendChild(mScript);
}
-->
</script>
然而,两秒钟过去后,我收到了错误。
我确信这可能是因为浏览器只是将它视为 div 中的文本,所以我如何让它识别它是 javascript。
我尝试过使用 eval,我不想使用它,但甚至返回解析错误。
提前致谢