首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Object._b_.NotImplementedError.$factory处获取错误(在$make_exc上使用Brython获取错误)

问在Object._b_.NotImplementedError.$factory处获取错误(在$make_exc上使用Brython获取错误)
EN

Stack Overflow用户
提问于 2020-09-17 13:20:54
回答 1查看 115关注 0票数 1

嗨,我用作为初学者。我的要求是从基于浏览器的应用程序中选择一个IP地址。,我想知道在的情况下是否有可能。我编写了一个非常小的代码来实现它。

index.html

代码语言:javascript
复制
<html>

<head>
    <script src="https://cdn.jsdelivr.net/npm/brython@3.8.10/brython.min.js">
    </script>
    <script src="https://cdn.jsdelivr.net/npm/brython@3.8.10/brython_stdlib.js">
    </script>
    <script type="text/python" src="./memos.py"></script>
    <script type="text/python" src="./hello.py"></script>
</head>

<body onload="brython()">

<script type="text/python">
            
            from browser import document, alert
            from browser import document
            from browser.template import Template
            from hello import sayHi, getFullName
            from memos import ping

            def pingIP(event):
                ipAddress = document["ipAdrs"].value
                pingResponse = ping(ipAddress)
                alert(pingResponse)
                document <= myFullName

            document["pingBtn"].bind("click", pingIP)
            Template(document["pingResponse"]).render(pingResponse=document)

</script>


<div id="d2">
<table>
    <tr>
        <td>Enter IP address:</td>
        <td><input type="text" name="ipAdrs" id="ipAdrs"></td>
        <td><button id="pingBtn">Ping</button></td>
        <td><span id="pingResponse">Are you able to ping (Ans: True / False): {pingResponse}</span></td>
    </tr>
</table>
</div>
</body>

</html>

ping地址的Python代码如下所示

代码语言:javascript
复制
import platform  
import subprocess

def ping(host):
    """
    Returns True if host (str) responds to a ping request.
    Remember that a host may not respond to a ping (ICMP) request even if the host name is valid.
    """

    print("hiii");
    # Option for the number of packets as a function of
    param = '-n' if platform.system().lower()=='windows' else '-c'

    # Building the command. Ex: "ping -c 1 google.com"
    command = ['ping', param, '1', host]

    return subprocess.call(command) == 0

在敲击IP地址时,我会得到以下错误。

代码语言:javascript
复制
Uncaught Error
    at Object._b_.NotImplementedError.$factory (eval at $make_exc (brython.js:7989), <anonymous>:1:212)
    at $module.<computed> (eval at run_js (brython.js:9382), <anonymous>:128:43)
    at _execute_child13056 (eval at exec_module (brython.js:9485), <anonymous>:6024:114)
    at $ (brython.js:5492)
    at __init__13024 (eval at exec_module (brython.js:9485), <anonymous>:2801:76)
    at r.__call__ (brython.js:5698)
    at s (brython.js:5876)
    at call13011 (eval at exec_module (brython.js:9485), <anonymous>:1598:98)
    at ping9 (eval at run_py (brython.js:9435), <anonymous>:54:103)
    at pingIP0 (eval at e.loop (brython.js:5368), <anonymous>:63:93)
_b_.NotImplementedError.$factory @ VM161060:1
$module.<computed> @ VM161447:128
_execute_child13056 @ VM161128:6024
$ @ brython.js:5492
__init__13024 @ VM161128:2801
r.__call__ @ brython.js:5698
s @ brython.js:5876
call13011 @ VM161128:1598
ping9 @ VM161126:54
pingIP0 @ VM161117:63
_ @ brython.js:13593

但是,我可以在NodeJs中实现它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-17 16:35:14

这在浏览器中是不可能的。不能从浏览器执行系统调用。布莱森就像一个像打字稿一样的播音员。

参考这链接。根据这个链接“,但是无论如何,出于安全考虑,不可能在命令行中执行程序,比如从浏览器中执行ping,无论是在Javascript还是Brython.中。”

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63938978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档