精华内容
下载资源
问答
  • CSS调用JS函数和变量

    千次阅读 2016-07-23 13:37:57
    CSS调用JS程序。 这个技术是网络安全里的,叫做CSS跨站。  我们知道CSS里是可以控制某些HTML元素的属性的,譬如background-image等等,而在URL里添加Javascript:alert()等等类似的代码就可以用来执行代码。...

    在CSS来调用JS程序。 这个技术是网络安全里的,叫做CSS跨站。 

    我们知道CSS里是可以控制某些HTML元素的属性的,譬如background-image等等,而在URL里添加Javascript:alert()等等类似的代码就可以用来执行代码。 

    我用的CSS代码如下: 

    <style type="text/css">
    body{
    height:200px;
    background:url(javascript:alert("test!"));
    }

    将这段代码随意插入到任何页面中都会执行其中的JS代码. 

    显然这开启了针对很多对于CSS具备自由编辑功能的很多BSP(BLOG服务提供商)的攻击思路,而对CSS入手的攻击目前作防范的很少. 

    从另一角度来看,设计系统可以在JS设计时考虑利用CSS进行包含和引用.这是很好的一个从JS控制CSS到CSS控制JS的一个反作用. 


    而深发出一个看法,具体待验证:凡是可以放URL的地方,均可以试试放javascript,可能就能成功! 

    关键字:css调用javascript 代码  css调用js代码 


    CSS中expression使用简介 

    定义 
      IE5及其以后版本支持在CSS中使用expression,用来把CSS属性和Javas cript表达式关联起来,这里的CSS属性可以是元素固有的属性,也可以是自定义属性。就是说CSS属性后面可以是一段Javas cript表达式,CSS属性的值等于Javas cript表达式计算的结果。 在表达式中可以直接引用元素自身的属性和方法,也可以使用其他浏览器对象。这个表达式就好像是在这个元素的一个成员函数中一样。 

      给元素固有属性赋值 

      例如,你可以依照浏览器的大小来安置一个元素的位置。 

    复制代码
    #myDiv {
    position: absolute;
    width: 100px;
    height: 100px;
    left: expression(document.body.offsetWidth - 110 + "px");
    top: expression(document.body.offsetHeight - 110 + "px");
    background: red;
    }
    复制代码

     给元素自定义属性赋值 

      例如,消除页面上的链接虚线框。 通常的做法是: 

    <a href="link1.htm" onfocus="this.blur()">link1</a>
    <a href="link2.htm" onfocus="this.blur()">link2</a>
    <a href="link3.htm" onfocus="this.blur()">link3</a> 

    粗看或许还体现不出采用expression的优势,但如果你的页面上有几十甚至上百个链接,这时的你难道还会机械式地Ctrl+C,Ctrl+V么,何况两者一比较,哪个产生的冗余代码更多呢? 

      采用expression的做法如下: 

    复制代码
    <style type="text/css">
    a {star : expression(οnfοcus=this.blur)}
    </style>
    <a href="link1.htm">link1</a>
    <a href="link2.htm">link2</a>
    <a href="link3.htm">link3</a> 
    复制代码

    说明:里面的star就是自己任意定义的属性,你可以随自己喜好另外定义,接着包含在expression()里的语句就是JS脚本,在自定义属性与expression之间可别忘了还有一个引号,因为实质还是CSS,所以放在style标签内,而非s cript内。OK,这样就很容易地用一句话实现了页面中的链接虚线框的消除。不过你先别得意,如果触发的特效是CSS的属性变化,那么出来的结果会跟你的本意有差别。例如你想随鼠标的移进移出而改变页面中的文本框颜色更改,你可能想当然的会认为应该写为 

    复制代码
    <style type="text/css">
    input 
    {star : expression(οnmοuseοver=this.style.backgroundColor="#FF0000";
    οnmοuseοut=this.style.backgroundColor="#FFFFFF")}
    </style>
    <style type="text/css">
    input {star : expression(οnmοuseοver=this.style.backgroundColor="#FF0000";
    οnmοuseοut=this.style.backgroundColor="#FFFFFF")}
    </style>
    <input type="text">
    <input type="text">
    <input type="text">
    复制代码

    可结果却是出现脚本出错,正确的写法应该把CSS样式的定义写进函数内,如下所示: 

    复制代码
    <style type="text/css">
    input {star : expression(οnmοuseοver=function()
    {this.style.backgroundColor="#FF0000"},
    οnmοuseοut=function(){this.style.backgroundColor="#FFFFFF"}) }
    </style>
    <input type="text">
    <input type="text">
    <input type="text">
    复制代码

    !!!注意 
    不是非常需要,一般不建议使用expression,因为expression对浏览器资源要求比较高。 能不用则不用,会导致性能问题。

    还有就是在IE 和 firefox 下执行正常,但是在chrome 中可能会失常 例如:

    先看一段HTML CODE,在下边的这段CODE中,图片宽度未知,我们就在CSS中对该图片进行限制为50px:

    <div id="test">
    <img src="http://www.zishu.cn/attachments/month_0702/n2007271255.gif" />
    </div>

    如在 Firefox或IE较高的版本可以直接写成max-width。在IE的低版本中,我们可能会写成如下的CODE:

    #test img{width: expression(this.width > 50 ? '50px': true); max-width: 50px; }

    但,上面的CODE有一个性能上的问题,性能會非常的差。为什么差,可以看一下之前写过的:expression为什么性能差?

    为了解決性能上的問題,我把CODE 写成了如下:

    #test img{ width: expression(this.width > 50 ? function(abc){abc.style.width = '50px';}(this) : 'auto'); max-width: 50px;}

     

    写好后,在IE和FIREFOX都是正常的!

    但是,在Chrome中就不同了,在这行下边的所有CSS都不能加载;如下边的CODE,最后一行CSS在CHROME中是不执行的;

    #test img{ padding:10px;}
    #test img{ width: expression(this.width > 50 ? function(abc){abc.style.width = '50px';}(this) : 'auto'); max-width: 50px;} 
    #test img{ border:20px solid #FFCC00}

    在IE和FIREFOX中是可以看到图片有黄色边框的,但在CHROME中是沒有的。

     

    expression在Chrome中的问题要知道有這么回事,写CODE时可以避免。
    expression的东西能不用就不要用,一但用了还有性能問題,为了解決性能问题又是出來了一个CHROME的問題。
    为了解決CHROME的问題就又有性能问题了,不知道有沒有更好的办法能兼容一下两者,实在不行就得在外边用JS來跑了。

    之后发现是CODE中的问题,如果写成这样就沒有问题了,少写了一个括号:

    (function(abc){abc.style.width = '50px';})(this)
    
    
    
    
    展开全文
  • 统一目录下的资源结构图: <...<...linkrel="stylesheet"href="gallery.css"type="text/css"media="screen"charset="utf-8"/><scripttype="text/javascript"src="script.js">&l...

    统一目录下的资源结构图:

     



    <html>
    <head>
     <link rel="stylesheet" href="gallery.css" type="text/css" media="screen" charset="utf-8"/>
    <script type="text/javascript" src="script.js"></script>
    </head>

    <body>
        <div id="container">
            <div id="header">
                <h1>StarTrackr!</h1>
        </div>
            <div id="content">
                <h2>Around Town Last Night</h2>
                
                <div id="ajaxInProgress"></div>
                <div id="photos">
                    <fieldset id="photoDetails">
                        <legend>Photo Tagging</legend>
                        <form id="details">
                            <p id="status"></p>
                            <p>
                                <label for="name">Name:</label><br/>
                                <input type="text" class="textField" name="name" id="name" />
                            </p>
                            <p>
                                <label for="tags">Tags:</label><br/>
                                <input type="text" class="textField" name="tags" id="tags" />
                            </p>
                            <p>
                                <input type="hidden" name="id" id="id">
                                <input type="button" value="update" id="update" />
                            </p>
                        </form>
                        <div id="gallery"></div>
                    </fieldset>
                </div>
       </div>
    </div>
    </body>
    </html>

     

    转载于:https://www.cnblogs.com/xiaochao12345/p/4073983.html

    展开全文
  • 如何在html中调用Js函数

    万次阅读 2019-04-02 08:40:10
    HTML组成网页,CSS组织网页,Javascript可以给网页添加复杂操作。 首先要明白,HTML是静态的,要想实现复杂的可变的操作(比如函数,计算结果等)必须使用Javascript进行操作。 Q.如何在Html中获取Javascript函数...

    HTML组成网页,CSS组织网页,Javascript可以给网页添加复杂操作。

    首先要明白,HTML是静态的,要想实现复杂的可变的操作(比如函数,计算结果等)必须使用Javascript进行操作。

    Q.如何在Html中获取Javascript函数的值

    HTML是静态的,即使将Javascript函数写入HTML,也不会得到函数的结果.

    <!DOCTYPE html>
    <html>
    <body>
     
    <p id="demo">demo()</p>
    <script>
    function demo(){
      return "cool"   
    }
     </script>
    </body>
    </html>

     

    转载:https://blog.csdn.net/weixin_41946792/article/details/79798953

    展开全文
  • 统一目录下的资源结构图:     index.html: &lt;...gallery.css" type="text/css" media="screen" charset="utf-8"/&gt; &lt;script ty

    统一目录下的资源结构图:

     

     

    index.html:

    <html>
    <head>
     <link rel="stylesheet" href="gallery.css" type="text/css" media="screen" charset="utf-8"/>
    <script type="text/javascript" src="script.js"></script>
    </head>
    
    <body>
    	<div id="container">
    		<div id="header">
    			<h1>StarTrackr!</h1>
        </div>
    		<div id="content">
    			<h2>Around Town Last Night</h2>
    			
    			<div id="ajaxInProgress"></div>
    			<div id="photos">
    				<fieldset id="photoDetails">
    					<legend>Photo Tagging</legend>
    					<form id="details">
    						<p id="status"></p>
    						<p>
    							<label for="name">Name:</label><br/>
    							<input type="text" class="textField" name="name" id="name" />
    						</p>
    						<p>
    							<label for="tags">Tags:</label><br/>
    							<input type="text" class="textField" name="tags" id="tags" />
    						</p>
    						<p>
    							<input type="hidden" name="id" id="id">
    							<input type="button" value="update" id="update" />
    						</p>
    					</form>
    					<div id="gallery"></div>
    				</fieldset>
    			</div>
       </div>
    </div>
    </body>
    </html>

     

    gallery.css:

    #gallery {
      background-color:#94C5EB;
      border:1px solid #015287;
      height:103px;
      width: 325px;
      overflow: auto;
      text-align:center;
      position: relative;
      margin-bottom: 10px;
    }
    
    #gallery img { 
      width: 97px; 
      height: 97px; 
      float:left; 
      border:1px 
      solid #fff; 
      padding:2px;
    }
    
    h2 {
      clear: both;
    }
    
    #photoDetails{
    	border-color: #015287;
    	background-color:#F4F4EE;
    }
    
    #photoDetails legend{
    	color: #D15600;
    }
    
    #details{
    	width:250px;
    	float:left;
    	margin-right:15px;
    }
    
    #details .textField{
    	width: 100%;
    }
    
    #details p{
    	margin:0;
    }
    
    #ajaxInProgress{
    	width:610px;
    	height:13px;
    	margin-top:-5px;
      padding: 2px 0;
    }
    
    #ajaxDetails{ float:right;}
    
    #status{
    	font-weight: bold;
    }
    
    .progress {
      background: #fff url(progress.gif) no-repeat center right;
    }

     

     图片资源文件 images.xml:

     

    <?xml version="1.0" encoding="UTF-8"?>
    <celebs>
      <celeb id="421">
        <name>Johnny Stardust</name>
        <image>johnny_200.jpg</image>
      </celeb>
      <celeb id="422">
        <name>Kellie Kelly</name>
        <image>kellie_200.jpg</image>
      </celeb>
      <celeb id="423">
        <name>Mo'Fat</name>
        <image>mofat_200.jpg</image>
      </celeb>
      <celeb id="424">
        <name>Beau Dandy</name>
        <image>beau_200.jpg</image>
      </celeb>
      <celeb id="425">
        <name>Darth Fader</name>
        <image>fader_200.jpg</image>
      </celeb>
      <celeb id="426">
        <name>Glendatronix</name>
        <image>glenda_200.jpg</image>
      </celeb>
    </celebs>
     

    json格式的数据资源 celebs.json:

    {
      "name": "Johnny Stardust",
      "id": 422,
      "tags": [
        "guitar",
        "hero",
        "a-list"
      ]
    }
     

    script.js:

    var GALLERY = {
      container: '#gallery',
      url: 'images.xml',
      delay: 1000,
      attempts: 3,
      running: false,
      
    	init: function(){
    		this.container = $(this.container);
    		var _gallery = this;
    		$( this.container ).scroll( function(){
    			_gallery.checkScroll();
    		});
    		this.load();
    	},
      checkScroll: function() {
        var gallery_div = $(this.container);
        if(gallery_div[0].scrollHeight - gallery_div.height() - gallery_div.scrollTop() <= 0) {
          this.load();
        }
      },
      reset: function() {
        this.delay = 1000;
        this.attempts = 3;
      },
      load: function() {
        // Don't call if we're already running!
        if(this.running) {
          return;
        }
        this.running = true;
        
        var _gallery = this;
        $.ajax({ 
          type:"get", 
          dataType: 'xml',
          url: this.url, 
          success: function(data){ 
            $(data)
              .find('celebs')
              .children()
              .each(function() {
                var node = $(this);
                var id = node.attr('id');
                var name = node.find('name').text();
                var image = node.find('image').text();
                _gallery.display({'id': id, 'image': image, 'name': name});
              });
          },
          complete: function() {
            // reset running variable to false
            _gallery.running = false;
          },
          error: function(xhr, status) {
            if(_gallery.attempts-- == 0) {
              // Sorry. We give up.
              _gallery.reset();
              return;
            }
            setTimeout(function() {
              _gallery.load();
            }, _gallery.delay *= 2);
          }
        });
      },
      display: function(dataItem) {
        $('<img />')
          .attr({
            src: '../../images/' + dataItem.image,
            alt: dataItem.name
          })
          .hide()
          .data('id', dataItem.id)
          .load(function() { 
            $(this).fadeIn();
          })
          .click(function() {
            CELEB.load($(this).data('id'));
          })
          .appendTo('#gallery');
      }
    }
    
    var CELEB = {
      url: 'celebs.json',
      
      load: function(image_id) {
        var _celeb = this;
        $('#details input').attr('disabled', 'disabled');
        $.getJSON(
          this.url,
    
          function(data) {
            $('#details input').removeAttr('disabled');
            _celeb.display(data);
          });
      },
      
      display: function(data) {
        $('#id').val(data.id);
        $('#name').val(data.name);
        $('#tags').val(data.tags.join(" "));
      }
    }
    
    $(document).ready(function(){
      $('#ajaxInProgress')
        .ajaxStart(function() { 
          $(this).addClass('progress'); 
        })
        .ajaxStop( function(){ 
          $(this).removeClass('progress'); 
        });
      GALLERY.init();
    });
    

     这里的js代码中函数功能独立而小巧,其中的传参方式和 函数的作用域定义的方式也很到位,值得学习和细细品味。

    执行效果(由于浏览器插件的问题,如片没有显示出来):

     

    展开全文
  • js函数调用时,js引擎不会检查传入参数的个数,自动从前向后匹配使用 如果传入的参数不够,进行加法运算时会报出NAN(not a number) ‘+’如果有字符串,会自动拼接 ‘+ true’,true将当作1...
  • <p><a href="http://pastebin.com/BYfSUjQJ" rel="nofollow noreferrer">http://pastebin.com/BYfSUjQJ</a> - my css file <p>Except from getting the database contents, my ...
  • HTML组成网页,CSS组织网页,Javascript可以给网页添加复杂操作。首先要明白,HTML是静态的,要想实现复杂的可变的操作(比如函数,计算结果等)必须使用Javascript进行操作。Q.如何在Html中获取Javascript函数的值...
  • js函数调用

    千次阅读 2018-07-11 17:44:57
    今天测试下js函数调用方法首先,css:&lt;style type="text/css"&gt; body{ width: 100%; height: 100%; margin: 0; padding: 0; text-align: center } button{ margin: 50px ...
  • I want to change the css styling of the size when it's clicked so the user knows that one was clicked. <p>deep within my php script i have 3 if statements </p> <pre><code>echo " <script type='...
  • ,取得元素最终计算出的css 样式 var a = document.getElementById("content"); alert("style "+a.style.color); alert("css "+window.getComputedStyle(a).getPropertyValue("color")); 转载于:...
  • 前言 ... 因为这一过程的调试探索还是蛮多内容的,我更倾向于记录自己整个探索的过程,而不是把工具拿出来讲一下用法...F12浏览器调试时,source目录下可以看到当前的浏览器的一些静态文件,包括页面,cssjs等文件...
  • CSS样式中调用Js

    2009-03-18 17:19:30
    CSS样式中使用属性调用js函数,具体实现如下: .class1 { COLOR:#000066; BACKGROUND:#FFFFFF; border:1px solid #AEC0D3; font-size:9pt; FONT-STYLE:normal; font-family:@华文楷体; FONT-WEIGHT:...
  • <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>... .
  • -4px } .gg-userlane::after { right: -4px } 你就可以得到一个自己写的图标: 现在一个问题来了: 我真正创建的页面传来的只有一大段css代码 页面中是不存在这个样式的 我该如何在js里编写代码 使传来的css样式进入...
  • 下面小编就为大家带来一篇常用js,css文件统一加载方法(推荐) 并在加载之后调用回调函数。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 函数到这里是做了什么过程 <p><img alt="" height="148" src="https://img-ask.csdnimg.cn/upload/1621158521660.png" width="380" /></p> 页面代码: <code class="language-html"><!DOCTYPE html>...
  • <style> .txt{ font-size:55px;...测试js控制css样式<br /></a></td> </tr> </table> 如果能打开浏览器是js的 setclass生效呢,用window.onload怎么写,不用的话怎么写,
  • 多个js文件调用函数问题 最近在做一个项目,用的==jquery==和==easyui==,有很多常用的函数我就把它们写到了common.js里面,然后又写了一link.jsp,把常用的cssjs文件都写在里面,然后页面直接include,写着写着就...
  • 函数(方法)——如何理解 如何理解方法这个概念,给大家举个通俗的示例: 拉灯同志给特工小组...为了让大家更好的理解函数调用过程,给大家画一个示意图,★★★这个很重要★★★,这里可以简单介绍一下递归

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 979
精华内容 391
关键字:

css调用js函数