【问题标题】:Onload function not working for a href加载功能不适用于href
【发布时间】:2015-02-25 12:51:14
【问题描述】:

我有一个脚本:

<script>
function load_thankyou()
{
    alert('hii');
    var delay = 1000; //Your delay in milliseconds
    var URL = 'thankyou.php';
    setTimeout(function()
                { 
                  window.location = URL; 
                }, delay);
}
</script>

函数调用方式如下...

<?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST') 
    {
        if($error_flag == 0)
        {?>

    <a class="close" href="#" onload="load_thankyou()">×</a>
<?php
        }
    }?>

但似乎不知何故 onload() 函数不起作用..

【问题讨论】:

  • 你确定 a-tag 有 onload 属性吗?
  • 我不知道。可能是因为他们没有答案而生气。
  • onload 事件仅在以下元素上触发:&lt;body&gt;&lt;frame&gt;&lt;iframe&gt;&lt;img&gt;&lt;input type="image"&gt;&lt;link&gt;&lt;script&gt; 和 @ 987654332@.
  • 就像我说的,a-tag 没有加载。但是您可以像我发布的那样使用它。这对 a-tags 来说是一种手动加载。或者让我们说一下这个 a-tag :)
  • 投反对票的一个原因可能是一个明显的问题,即“为什么要为此使用 onload?”为什么不直接调用函数,而不是尝试将函数归类到链接标签中,然后调用它 onload?

标签: javascript jquery


【解决方案1】:

你可以做的是只给你的链接一个类和href到#(什么链接到无),比如:

<a class="close" href="#" >×</a>

你的 JS 可能看起来像:

<script>

    $(document).ready(function(){
        //check if close element exists. If yes, execute the function
        if($('.close').length() > 0) load_thankyou();
    });

    function load_thankyou()
    {
        alert('hii');
        var delay = 1000; //Your delay in milliseconds
        var URL = 'thankyou.php';
        setTimeout(function()
                    { 
                      window.location = URL; 
                    }, delay);
    }

</script>

这将等待页面加载并检查 a-tag 是否存在,如果存在,它将执行该功能。有点像a-tags的onload

【讨论】:

  • 我刚刚编辑了我的帖子,因为我意识到该链接不像构建时那样方便:)
  • 我没有投反对票,但是,这有什么实际意义?为什么你不只是简单地在你的$(document).ready(function(){}); 中调用load_thankyou(); 并完成它。这可能是投反对票的原因。它有效,但似乎完全没有必要
  • 因为您可能有不同的方面,并且您不想在每个页面上都加载它:) 可能您有 100 个页面并且只想在元素存在时执行它。当然你可以检查元素是否存在并执行它。
  • 所有逻辑都可以在您调用load_thankyou(); 之前通过任意数量的检查完成功能,而一个单独的(同样无用的)功能点击所述链接
【解决方案2】:

onload 属性仅适用于“body”标签,
您不能在其他任何地方使用。
要在标签中实现,您需要在加载时使用“a”标签的点击事件中的 javascript

你可以通过javascript在body load事件中“a”标签的点击事件

【讨论】:

  • 非常感谢 Saswat... 我非常感谢您的反馈
  • "onload 属性仅适用于“body”标签,您不能在其他任何地方使用。"是不正确的。 Onload 对以下标签有效:、、、
【解决方案3】:

如果是我,我只会调用函数而不是试图将函数归类到链接标签中,然后调用它 onload

<?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST') 
    {
        if($error_flag == 0)
        {
           echo 'load_thankyou()';

        }
    }?>

【讨论】:

    【解决方案4】:

    如果你想在点击时使用该功能,可以这样使用:

    <a class="close" href="javascript:load_thankyou()">×</a>
    

    或者,如果您想在标记准备好后立即执行代码,然后在 html 之后使用您的代码,我更愿意在结束正文的结尾使用它:

    <script>
    load_thankyou();
    </script>
    </body>
    

    在你的情况下,你可以这样做:

    <?php
        if ($_SERVER['REQUEST_METHOD'] == 'POST') 
        {
            if($error_flag == 0)
            {?>
    
        <a class="close" href="#">×</a>
        <script>
         load_thankyou();
        </script>
    <?php
            }
        }?>
    

    onload 仅针对文档真正执行,表示所有图像都已加载,您可以这样做&lt;body onload=""&gt;,但使用a 标签您不能这样做...

    【讨论】:

    • 但这将在点击时执行,所以实际上它不是加载:)
    • 您无需在此处更改href。尤其是指向Javascript 的电话,这在 SEO 方面很糟糕。
    猜你喜欢
    • 2017-10-31
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 2015-11-27
    • 2016-01-25
    • 2014-10-12
    相关资源
    最近更新 更多