javascript在第一次加载时不工作-刷新后工作

javascript在第一次加载时不工作-刷新后工作,javascript,php,jquery,Javascript,Php,Jquery,当我第一次测试时(刷新浏览器-清除缓存) 它没有像预期的那样工作 一旦我刷新,它的工作非常好 我想我错过了什么 这里我附上完整的脚本,请帮助 <script> //get the IP addresses associated with an account function getIPs(callback){ var ip_dups = {};

当我第一次测试时(刷新浏览器-清除缓存)

它没有像预期的那样工作

一旦我刷新,它的工作非常好

我想我错过了什么

这里我附上完整的脚本,请帮助

<script>
                    //get the IP addresses associated with an account
                    function getIPs(callback){
                        var ip_dups = {};

                        //compatibility for firefox and chrome
                        var RTCPeerConnection = window.RTCPeerConnection
                            || window.mozRTCPeerConnection
                            || window.webkitRTCPeerConnection;
                        var useWebKit = !!window.webkitRTCPeerConnection;

                        //bypass naive webrtc blocking using an iframe
                        if(!RTCPeerConnection){
                            //NOTE: you need to have an iframe in the page right above the script tag
                            //
                            //<iframe id="iframe" sandbox="allow-same-origin" style="display: none"></iframe>
                            //<script>...getIPs called in here...
                            //
                            var win = iframe.contentWindow;
                            RTCPeerConnection = win.RTCPeerConnection
                                || win.mozRTCPeerConnection
                                || win.webkitRTCPeerConnection;
                            useWebKit = !!win.webkitRTCPeerConnection;
                        }

                        //minimal requirements for data connection
                        var mediaConstraints = {
                            optional: [{RtpDataChannels: true}]
                        };

                        var servers = {iceServers: [{urls: "stun:stun.services.mozilla.com"}]};

                        //construct a new RTCPeerConnection
                        var pc = new RTCPeerConnection(servers, mediaConstraints);

                        function handleCandidate(candidate){
                            //match just the IP address
                            var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/
                            var ip_addr = ip_regex.exec(candidate)[1];

                            //remove duplicates
                            if(ip_dups[ip_addr] === undefined)
                                callback(ip_addr);

                            ip_dups[ip_addr] = true;
                        }

                        //listen for candidate events
                        pc.onicecandidate = function(ice){

                            //skip non-candidate events
                            if(ice.candidate)
                                handleCandidate(ice.candidate.candidate);
                        };

                        //create a bogus data channel
                        pc.createDataChannel("");

                        //create an offer sdp
                        pc.createOffer(function(result){

                            //trigger the stun server request
                            pc.setLocalDescription(result, function(){}, function(){});

                        }, function(){});

        //read candidate info from local description
        var lines = pc.localDescription.sdp.split('\n');

        lines.forEach(function(line){
        if(line.indexOf('a=candidate:') === 0)
        handleCandidate(line);
        });
                    }

                    //insert IP addresses into the page
                    getIPs(function(ip){

                        //local IPs
                        if (ip.match(/^(192\.168\.|169\.254\.|10\.|172\.(1[6-9]|2\d|3[01]))/))
                           //document.getElementsByTagName("ul")[0].appendChild(li);
        document.cookie="ip="+ip;
                    });


                </script>

//获取与帐户关联的IP地址
函数getIPs(回调){
var ip_dups={};
//firefox和chrome的兼容性
var RTCPeerConnection=window.RTCPeerConnection
||window.mozRTPeerConnection
||window.webkirtpeerconnection;
var useWebKit=!!window.webkittrpeerconnection;
//使用iframe绕过原始webrtc阻塞
如果(!RTPeerConnection){
//注意:在脚本标记正上方的页面中需要有一个iframe
//
//
//…getIPs打电话来这里。。。
//
var win=iframe.contentWindow;
rtpeerconnection=win.rtpeerconnection
||win.MozRTPeerConnection
||win.webkirtpeerconnection;
useWebKit=!!win.webkirtpeerconnection;
}
//数据连接的最低要求
变量mediaConstraints={
可选:[{RtpDataChannels:true}]
};
var servers={iceServers:[{url:“stun:stun.services.mozilla.com”}]};
//构造新的RTPeerConnection
var pc=新的RTPeerConnection(服务器、媒体约束);
函数handleCandidate(候选函数){
//只匹配IP地址
var ip_regex=/([0-9]{1,3}(\.[0-9]{1,3}){3}{124;[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/
var ip_addr=ip_regex.exec(候选者)[1];
//删除重复项
if(ip地址[ip地址]==未定义)
回调(ip地址);
ip_dups[ip_addr]=真;
}
//倾听候选事件
pc.onicecandidate=函数(ice){
//跳过非候选事件
国际单项体育联合会(ice候选人)
handleCandidate(ice.candidate.candidate);
};
//创建虚假数据通道
pc.createDataChannel(“”);
//创建报价sdp
pc.createOffer(函数(结果){
//触发stun服务器请求
pc.setLocalDescription(结果,函数(){},函数(){});
},函数(){});
//从本地描述中读取候选人信息
var lines=pc.localDescription.sdp.split('\n');
行。forEach(函数(行){
if(line.indexOf('a=candidate:')==0)
handleCandidate(行);
});
}
//在页面中插入IP地址
getIPs(功能(ip){
//本地IP
如果(ip匹配(/^(192\.168\.| 169\.254\.| 10\.| 172\.(1[6-9]| 2\d|3[01])/)
//document.getElementsByTagName(“ul”)[0].appendChild(li);
document.cookie=“ip=”+ip;
});
这个脚本在safari浏览器中也不起作用,但这个脚本在chrome、opera和Firefox中也起作用

请帮我解决这个问题


谢谢您……

Safari针对所述的“ip泄漏”问题提供了缓解措施。WebRTC不是为未经用户同意从用户处收集IP地址而设计的