monkeye
注册会员

一般会员
UID 16937
精华
0
积分 115
帖子 97
金钱 115 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2002-10-10 来自 PHPSo、Discuz!
状态 离线
|
MTIR使用教程
MTIR使用教程
原自 MVC.PHPSo.Com
(以下为课堂授课记录)
要用MTIR做东西,第一步,自然是引用到这个脚本了(费话,读者:是的引用到了)。但是,这个脚本他不会简单的被引用后,啥事也不做(读者:哦这个是自然的)。只要引用了它,它会自动在页面 onload 的时候分析当前页面是否有它要找的标记。他要寻找的标记有2种:
1、<span _frame>
2、<a _target> <form _target>
但是你不用亲自加 onload ,MTIR自己会加的。所以脚本在没有onload完毕的时候,所有效果都不会有,如果那时你比较着急,点击了肯定都会有错误。这是一个细节。
然后说说作用(读者:不刷新。汗~)。作用呢 <span _frame></span> 表示此处为MTIR的一个动态区域,这个标记是必须有的。当然为了识别,必须有一个id。只要存在这样的<span>,那么在MTIR中你就可以把它当成一个frame处理。
就像链接 <a href='list.php' target=frame>,但是比较特殊 <a href='list.php' _target=frame>(读者:改了??)。要多加一个“_”
,写成“_target”。只有这么写 MTIR才会认为你要把这个链接打开到那个MTIR的Frame中,而不是通常的一个frame,实现页面内部的无刷新。因此...MTIR实际上就是那么简单,设置一个显示区域 <span id=frame1 _frame></span> 然后在这个区域打开一个页面 <a href='list.php'
_target=frame1>链接</a>
当然,同样,<form>一个表单显示的结果也可以显示在这个MTIR的frame中,方法依然是 <form target='frame'> 修改成 <form _target='frame'>。POST还是GET不限,都可以。因此对于MTIR的基本使用中,你不需要写任何的JS就可以实现无刷新的效果,这就是MTIR的特点
当然,MTIR本身还是附加了一些js供使用者使用。比如,任何一个你已经声明的MTIR frame中你都可以这么用 frame1.location('list.php')。注意不是 frame1.location='list.php' ,而是一个函数 frame1.location('list.php')。这是MTIR自动为所有页面中的MTIR frame设置的函数。(读者:自己写的???)是的,作用自然和点击链接 <a href='xxx' _target=frame1>的效果是一样的。这是为了有些效果需要用JS设计的时候准备的。当然 frame1.location('list.php') 这么写不符合HTML标准。 document.getElementById('frame1').location('list.php'); 这么写才是标准的写法。尽管对IE来说,不标准也可以,但是养成习惯还是很好地(读者:哦好的)。
考虑到有些人喜欢页面一开启的时候,就打开某某MTIR frame,因此自己可以设置定义1个函数,这个函数的函数名是固定的function frame_init()
如:
function frame_init() {
document.getElementById('dis').location('list.php');
}
只要有这个函数,MTIR会在onload的时候自动运行这个函数。如果没有,当然就不运行了,呵呵。同时,你自己的一些onload的附加的也可以写在这里,反正不用白不用。这个函数中的内容都会每次onload的时候被运行。
然后....为了附加一些类似Ajax的效果,当然自己可以额外的附加一些小东东。当然这是MTIR功能之外的,纯属HTML本身的效果,你可以随意用。比如 dis3.location('prg2.php'); 的时候 document.getElementById('dis3').innerHTML='Loading...'。 这样可以显示一个Loading... 看起来蛮
帅的。
然后...说说额外的,MTIR允许嵌套。也就是说你打开的MTIR页面中还允许包含<span _frame>标记和<form _target>表单提交等任何MTIR允许的内容。这样,可以让MTIR在一个页面中互动起来,非常的灵活。
最后说说链接中的内容,<a href='list.php' _target='frame1'>,那么list.php中返回的内容要有什么才可以符合呢?可以说...没限制,写什
么都可以。(读者:什么内容都可以吧)是的,只是不允许远程调用 。你不能 <a href=http://www.sohu.com>。list.php中最好有<body> (读者:为什么???)。但是没有也没关系,MTIR只会获取 list.php <body>中的内容。如果你的list.php中没有表单<form>的话可以不写<body>,如果有<form>必须写<body>。如果你要附加什么JS命令,可以附加在<body>前,还有如果附加什么<meta>设置也可以附加在<body>。
MTIR不存在Ajax的那种内码冲突,主页是UTF8的子页面是GBK的依然可以。但是你最好..别那么做,自己做东西总要有个内码统一吧。但是至少不用像制作Ajax那样不支持中文的问题。你可以在子页面生成的时候发送 header("content-Type:text/html;charset=utf-8");。
还有最后一个,子页面可以不用写样式表,样式表会跟随主页自动生效。
Myth Genius(22118227) 16:17:21
好的你听
我关于表单提交有问题
monkeye(10433182) 16:26:53
说
Myth Genius(22118227) 16:18:21
<form action="" method="post" _target="man">
</form>
Myth Genius(22118227) 16:18:36
我这个在本页提交对不???
monkeye(10433182) 16:27:20
action别为空
Myth Genius(22118227) 16:18:51
为什么???
monkeye(10433182) 16:27:40
否则_frame区会显示一份主页自己
Myth Genius(22118227) 16:19:31
难怪呢???那写上当前页的名字总可以吧
monkeye(10433182) 16:28:29
那不和不写的效果是一样的吗?
monkeye(10433182) 16:28:41
你要显示什么单独写个文件
提交到那里
Myth Genius(22118227) 16:20:10
啊你的意思是不能本页提交??
monkeye(10433182) 16:28:57
或者你自己PHP文件控制好流程
Myth Genius(22118227) 16:20:18
难怪呢
Myth Genius(22118227) 16:20:36
那可能我搞定了。
monkeye(10433182) 16:29:22
比如
if($_POST) {
显示什么
} else {
显示什么
}
monkeye(10433182) 16:29:28
这样内容就分开了
monkeye(10433182) 16:29:58
但是注意子页中不要包含header
如果你的网页设计每页都显示header的话
子页不要显示
Myth Genius(22118227) 16:21:18
哦还是写一个文件比较好
Myth Genius(22118227) 16:21:53
哦看来我要试下了
monkeye(10433182) 16:30:39
MTIR 兼容 IE Firefox Opera
monkeye(10433182) 16:30:50
常用浏览器
都没问题
monkeye(10433182) 16:30:56
尽管设计好了
Myth Genius(22118227) 16:22:50
好的,我要去做了10分钟 计时
说个凡是Ajax type网站都有的问题,对了还有个问题。Ajax的不容易被Google收录,所以要收录的页面自己设置好单独页。
MTIR也是如此,但是 <a href='' _target=frame1>的会被收录,因此比Ajax还有些优势的。
Myth Genius(22118227) 16:24:22
<php
require"../include/common.inc.php";
?>
<html>
<head>
<script src="MTIR.js"></script>
没有问题吧
monkeye(10433182) 16:33:19
没
但是,子页面不要这么写了
子页面不需要写mtir.js调用
mtir本身支持嵌套
Myth Genius(22118227) 16:25:06
这个是的
不管我先去了
monkeye(10433182) 16:34:09
子页面嵌套n层都没事
|  代码就像自己的孩子,你要投入真挚的感情去爱护她 ♥
|
|