【问题标题】:HTML onload - using variables as parametersHTML onload - 使用变量作为参数
【发布时间】:2011-04-29 12:51:07
【问题描述】:

我想使用类似的东西:

<body onLoad="init('A sentence with "quoted text" as parameter')">

不幸的是,这确实有效,因为参数中的引号没有得到正确处理。

转义引号也不起作用

<body onLoad="init('A sentence with \"quoted text\" as parameter')">

(上面也行不通)。

我该如何处理。我虽然也许我可以创建一个字符串变量并将我的句子(带引号)分配给它。但我不知道该怎么做!正文 onload 是 HTML,Javascript 变量仅在脚本范围内可见,对吗?确切地说,以下方法不起作用:

<script language="JavaScript">
var dada='A sentence with \"quoted text\" as parameter';
</script>
<body onLoad="init($dada, '</a>')">

【问题讨论】:

  • language 属性已弃用

标签: javascript html variables parameter-passing onload


【解决方案1】:

不是最好的方法

onload='init("A sentence with \"quoted text\" as parameter")'

【讨论】:

  • 这不起作用,正如我在问题中提到的那样。不过谢谢!
  • 哦。谢谢..是的,对不起,我错过了引号的不同位置。
【解决方案2】:

您必须使用 HTML 实体才能使其工作:

<body onLoad="init('A sentence with &quot;quoted text&quot; as parameter')">

不过,更简洁的方法是在文档头部的单独 &lt;SCRIPT&gt; 部分中分配值。

...
<script>
body.onload = function() { init('A sentence with "quoted text" as parameter'); }
</script>
<body>
...

onload 事件的一般缺点是它仅在文档及其所有资产(图像、样式表...)已加载时触发。这就是 onDOMLoad 事件的来源:当核心 HTML 结构准备好并呈现所有元素时触发。但是,它并不是跨浏览器统一支持的,因此所有框架都有自己的实现。

jQuery版本叫.ready().

【讨论】:

  • 非常感谢。我是 javascript 的初学者,所以错过了这些替代样式。
  • @JP19 我在第二个块中有一个错误。如果您使用代码,请确保复制更改(附加的function() { })。对不起。
【解决方案3】:

顺便说一句,我犯了一个愚蠢的错误。

<script language="JavaScript"> 
var dada='A sentence with \"quoted text\" as parameter'; </script> 
<body onLoad="init(dada, '</a>')"> 

这也有效。我在 onload 调用中使用了 $dada 而不是 dada。

【讨论】:

    【解决方案4】:

    与其内联onLoad 方法,不如以编程方式设置它。然后,您可以使用closures 的强大功能将数据获取到函数中。

    <script type="text/javascript">
    var data = "some data";
    document.body.onload = function()
    {
        alert(data);
    }
    </script>
    

    【讨论】:

    • 谢谢,是的,这看起来不错。我很高兴我的问题这么快就解决了。
    • 谢谢。这种方法允许我修复对 IFrame resize onload-handler 的调用(通过参数/参数),当我们从 CRM2011 移动到 CRM365/2016 时,该调用中断: var frameHandle = parent.document.getElementById("IFRAME_my Iframe") ; // 是:frameHandle.setAttribute("onload", "myFrameResize(this);"); frameHandle.onload = function () { myFrameResize(frameHandle); };
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 2016-03-12
    相关资源
    最近更新 更多