项目中遇到一个问题,同一个在 dom 节点中使用了 <img> 标签来加载,同时由于项目使用了 ThreeJS 3D 渲染引擎,在加载纹理时使用了 TextureLoader 来加载了同一张,而由于是在阿里云服务器上的,所以最后报出了跨域问题。
>
利用javascript
写一个在页面点击加减按钮实现数字的累加。
简略的html大概如此。看得懂就好不要在意这些细节啊
<input
type="button"
value="+"
onclick="jia(this)"
/>
<label
class="num">0</label>
<input
type="button"
value="-"
onclick="jian(this)"
/>
样子是这样的
javascript
代码如下
<script
type="text/javascript">
function
jia(a)
{
var
nextnode
=
anextElementSibling;//获取下一个节点
alert(nextnodeinnerHTML);
var
a
=
parseInt(nextnodeinnerHTML)
a
+=
1;
nextnodeinnerHTML
=
a;
}
function
jian(a)
{
var
previousnode
=
apreviousElementSibling;
var
a
=
parseInt(previousnodeinnerHTML)
a
-=
1;
a
=
a
>
0
a
:
0;
previousnodeinnerHTML
=
a;
}
</script>
解释一下:
function
jian(a)和
function
jia(a)就是当前点击的对象了。在onclick事件接的方法里加了this;
-
nextElementSibling
获取当前节点的下一个节点(获得下一个兄弟节点)
-
previousElementSibling
获取当前节点的上一个节点
注意:
IE将跳过在节点之间产生的空格文档节点(如:换行字符),而Mozilla不会这样——FF会把诸如空格换行之类的排版元素视作节点读取,因此,在ie
中用nextSibling便可读取到的下一个节点元素,在FF中就需要这样写:nextElementSibling了。
上面的解释的意思的使用
nextElementSibling
和previousElementSibling
获得下一个兄弟节点和上一个兄弟节点,可以去掉换行,空格上面之类的,直接找到我们标签元素。但是下面的两个
nextSibling
previousSibling
也是得下一个兄弟节点和上一个兄弟节点的,只是在IE中好用
--------------------关键字解释
parseInt
转化功能。
a
=
a
>
0
a
:
0;----三元表达式。
/------------同源---------------/
同源:当两个接口的协议、域名、端口号都相等时,这俩接口是同源的,只要有一个条件不相等,则非同源。不是同源的两个页面不能互相访问本地缓存、不能互相修改dom节点、不能使用ajax请求对方接口数据
如何判断两个网页同源
1、协议相同 2、域名相同 3、端口号相同
同源策略目的:1、保护本地缓存不被读取2、保护网站不被其他网站修改
同源策略的限制:
1、Cookie、localStorage、indexDB无法读取
2、dom节点无法获得。
3、AJAX请求无法发送。
JSONP:利用scritp标签请求外部服务器中的数据,从而绕开同源策略对AJAX请求数据的限制。
jsonp的本质:利用script标签中src属性可以加载任意文件的特性,通过这个属性来访问数据接口(添加一个回调函数作为参数),而数据接口会返回一个由回调函数名包裹的json数据,从而达到获取跨域数据的目的。
/------------封装JSONP---------------/
creatScriptTag('>
关于跨域名问题还是问题么,这方面的解决实践非常多,今天我就旧话重提把我所知道的通过几个应用场景来分别总结一下(转帖请注明出处:>
以上就是关于Threejs问题:TextureLoader 与<img>标签,图片跨域的问题全部的内容,包括:Threejs问题:TextureLoader 与<img>标签,图片跨域的问题、在react中,怎样获取dom元素、javascript获取dom的下一个节点方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)