【问题标题】:Insert JavaScript into a JavaScript alert将 JavaScript 插入 JavaScript 警报
【发布时间】:2015-12-13 00:20:49
【问题描述】:

这是加载警报和警报本身的按钮:

<center><button onclick="myFunction()">Click me</button></center>

<script>
function myFunction() {
    alert("blablabla");
}

这是我希望加载警报的代码:

 <script type="text/javascript" language="javascript" src="http://en.dnstools.ch/out/4.js">

访问者单击按钮,它会显示带有其外部 IP 的警报。我尝试了innerHTML,但没有成功。

【问题讨论】:

  • 您是否拥有http://en.dnstools.ch 域,并由您控制?因为那时只有你才能做到这一点
  • 我不认为你可以用原始 JS 做到这一点,alert 函数只接受一个字符串作为参数。
  • 你能用 PHP 解决这个问题吗?有一个非常好的答案展示了如何在 PHP 中执行此操作,但它被删除了。如果不能用PHP解决,请去掉PHP标签。
  • 你的问题是矛盾的。 alert 在屏幕上显示一条消息,它不加载任何代码。如果要加载一些代码,可以在警报旁边执行。但是,由于您尝试加载的代码使用document.write,替换原始页面,因此在使用&lt;script&gt; 调用后,没有代码可以工作,正如其他人所建议的那样。

标签: javascript jquery ip-address


【解决方案1】:

如果您可以将 id ip 添加到包含此 ip 的 div 中,如果它包含在您的 myFunction 之前,您将能够获取它。然后$("#myIdContainingTheIp").html() 将包含您的 ip,您将能够提醒它。

【讨论】:

    【解决方案2】:

    文件http://en.dnstools.ch/out/4.js 包含以下JavaScript:

    document.write('[your ip]');
    

    其中[your ip] 是实际访问者IP。由于它使用document.write,因此您不能直接将其放入警报中。该方法所做的是直接写入 HTML 文档(如果它是打开的,如果不是它则清除它)。这是一种旧方法,使用它不是一个好主意。但由于我假设您不控制此代码,因此如果您想使用此特定服务,您可能没有选择。

    那么,如何将它变成警报呢?试着把这个 HTML 放在你身体的任何地方:

    <div id="ip" style="display:none;">
       <script type="text/javascript" language="javascript" src="http://en.dnstools.ch/out/4.js"></script>
    </div>
    

    这会给你一个隐藏的 div,里面有 IP。现在你可以像这样在 JavaScript 中提醒它(只要 DOM 准备好):

    alert(document.getElementById("ip").textContent);
    

    由于客户端可以轻松修改您通过此方法获取的IP,请勿将其用于任何安全目的。

    【讨论】:

    • 不起作用,警报显示如下:
    【解决方案3】:

    使用 JQuery 你可以通过以下方式做到这一点:

    <center><button id="clickMe">Click me</button></center>
        <span style="display:none;"><script type="text/javascript" language="javascript" src="http://en.dnstools.ch/out/4.js"></script></span>
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    
    <script>
    function myFunction() {
    
        alert($('span').text());
    }
    
    $('#clickMe').click(function(){
        myFunction();
    });
    </script>
    

    DEMO

    【讨论】:

    • 只需使用$('#clickMe').click(myFunction); 而不是声明调用myFunction 的内联函数。不错的解决方案!
    猜你喜欢
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 2014-05-22
    • 2012-06-11
    • 2016-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多