前几天有一个需求,大概是在一个页面嵌套一些代码后,执行提交表单功能到另一个项目中,看似很简单 实际里面的东西也还是不少的,用习惯了jquery,导致原始的js用的不是很习惯,下面就说一下:(由于要考虑到每个页面可能js冲突 所以只能自己写方法)
1、ajax 跨域请求问题 ,由于是夸域名请求提交,所以ajax是不支持的,只能在同域下进行交互,至少ie是不行的,firefox只是抛出错误,上网看了看,采用的解决办法是:
var head = document.getElementsByTagName("head")[0];
var js = document.createElement("script");
js.src = "http://www.baidu.com?search=myworkroom.org";
js.onload = js.onreadystatechange = function(){
if (!this.readyState || this.readyState == "loaded" || this.readyState == "complete"){
head.removeChild(js);
}
}
head.appendChild(js);
这是在网上找的,意思是在页面<head></head>里动态插入<script>标签而里面的src属性就是要提交的信息
2、查找元素
由于习惯了用,所以已经不太习惯自己写了,比如要给一个页面的所有提交<a>进行绑定事件
var addListener=window.addEventListener?function(obj,type,fn){obj.addEventListener(type,fn,false);}:function(obj,type,fn){obj.attachEvent('on'+type,fn);};
就要自己去写 判断浏览器;
比如查找元素$("#div").find("input[id=name]")来获取对象,可是在js中要用递归才能取出来,比如
function findElement(parentObj,type,id){//parentObj 要超找子元素的最上级对象 div,标记名字 input,id值
for(var i=0;i<parentObj.childNodes.length;i++){
var el = parentObj.childNodes[i];
if(el.tagName==type.toUpperCase()){
if(el.id==id){
return el;
}else{
continue;
}
}else{
var result = findElement(el,type,id);
if(result!=null){
return result;
}
}
}
return null;
}
当然,上面可以进一步进行完善 比如像jquery id可变为随意的属性比如class、title等,可以变为一个参数,自己去进行解析等等
以上就说2点吧 ,还有一些逻辑、判断、提示等,只是提到备忘用处,有不正确或不佳的地方还请多多赐教~