現在、CMSやPHPを使用できない場所と契約していますが、HTMLやJavaScriptを使用してCMSのようなものを構築してほしいとのことです。
ばかげているように聞こえますが、最近は別の仕事を探したくありません。彼らは私がこれまで働いた中で最も素晴らしい人々であり、私は年をとっています。
CMSの概念の1つは、いつでも含めることができるグローバルファイルを用意することです。
その結果、$。ajax、$。getなどを試しましたが、Access URIが拒否されたり、現在のディレクトリの1つのディレクトリレベルであるファイルを読み込もうとしたりする問題が発生していました。
古いXMLHttpRequest/ActiveXObjectを使用して、javascriptファイルをロードすることができました。
ただし、ロードされたdiv内のスクリプトを呼び出すことはできません。divにロードされた関数の名前である「変数が見つかりません:mFunc」というエラーが表示されます。
これが私の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>
それでも、2秒が経過すると、エラーが発生します。
おそらくブラウザがこれをdiv内のテキストとして認識しているためだと確信しているので、それがjavascriptであることを認識させるにはどうすればよいですか。
使用したくないevalを使用しようとしましたが、解析エラーが返されます。
前もって感謝します