⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 htmldisplay.py

📁 属性sosuo算法
💻 PY
📖 第 1 页 / 共 2 页
字号:
        return YES    def isSelectorExcludedFromWebScript_(self,sel):        if (str(sel) == 'eventURL'):            return NO        else:            return YES    def eventURL(self,url):        self.onLoadURL(str(url))    def webView_contextMenuItemsForElement_defaultMenuItems_(self,webView,contextMenu,defaultMenuItems):        event = NSApp().currentEvent()        if event.type() == NSLeftMouseDown and (event.modifierFlags() & NSControlKeyMask):            fake = NSEvent.mouseEventWithType_location_modifierFlags_timestamp_windowNumber_context_eventNumber_clickCount_pressure_(                           NSRightMouseDown, event.locationInWindow(), 0, 0, event.windowNumber(), nil, 0, 1, 0)            NSApp().postEvent_atStart_(fake, YES)        return nil    # Generate callbacks when the initial HTML (passed in the constructor)    # has been loaded    def webView_didFinishLoadForFrame_(self, webview, frame):        if (not self.initialLoadFinished) and (frame is self.view.mainFrame()):            platformutils.warnIfNotOnMainThread('ManagedWebView.webView_didFinishLoadForFrame_')            # Execute any function calls we queued because the page load            # hadn't completed            self.initialLoadFinished = True            for func in self.execQueue:                func()            self.execQueue = []            if self.onInitialLoadFinished:                self.onInitialLoadFinished()            scriptObj = self.view.windowScriptObject()            scriptObj.setValue_forKey_(self,'frontend')    # Intercept navigation actions and give program a chance to respond    def webView_decidePolicyForNavigationAction_request_frame_decisionListener_(self, webview, action, request, frame, listener):        platformutils.warnIfNotOnMainThread('ManagedWebView.webView_decidePolicyForNavigationAction_request_frame_decisionListener_')        method = request.HTTPMethod()        url = request.URL()        body = request.HTTPBody()        type = action['WebActionNavigationTypeKey']        #print "policy %d for url %s" % (type, url)        # setting document.location.href in Javascript (our preferred        # method of triggering an action) comes out as an        # WebNavigationTypeOther.        if type == WebNavigationTypeLinkClicked or type == WebNavigationTypeFormSubmitted or type == WebNavigationTypeOther:            # Make sure we have a real, bona fide Python string, not an            # NSString. Unfortunately, == can tell the difference.            if (not self.onLoadURL) or self.onLoadURL('%s' % url):                listener.use()            else:                listener.ignore()        else:            listener.use()    # Redirect resource: links to files in resource bundle    def webView_resource_willSendRequest_redirectResponse_fromDataSource_(self, webview, resourceCookie, request, redirectResponse, dataSource):        platformutils.warnIfNotOnMainThread('ManagedWebView.webView_resource_willSendRequest_redirectResponse_fromDataSource_')        url = "%s" % request.URL() # Make sure it's a Python string        match = re.compile("resource:(.*)$").match(url)        if match:            path = resources.path(match.group(1))            urlObject = NSURL.fileURLWithPath_(path)            return NSURLRequest.requestWithURL_(urlObject)        return request    # Return the actual WebView that we're managing    def getView(self):        return self.view    # Call func() once the document has finished loading. If the    # document has already finished loading, call it right away. But    # in either case, the call is executed on the main thread, by    # queueing an event, since WebViews are not documented to be    # thread-safe, and we have seen crashes.    def execAfterLoad(self, func):        if not self.initialLoadFinished:            self.execQueue.append(func)        else:            platformutils.callOnMainThreadAndWaitUntilDone(func)    # Decorator to make using execAfterLoad easier    def deferUntilAfterLoad(func):        def runFunc(*args, **kwargs):            func(*args, **kwargs)        def schedFunc(self, *args, **kwargs):            rf = lambda: runFunc(self, *args, **kwargs)            self.execAfterLoad(rf)        return schedFunc    # Execute given Javascript string in context of the HTML document    @deferUntilAfterLoad    def execJS(self, js):        self.view.stringByEvaluatingJavaScriptFromString_(js)    ## DOM mutators called, ultimately, by dynamic template system ##    def findElt(self, id):        doc = self.view.mainFrame().DOMDocument()        elt = doc.getElementById_(id)        return elt    def createElts(self, xml):        parent = self.view.mainFrame().DOMDocument().createElement_("div")        if len(xml) == 0:            parent.setInnerHTML_(" ")        else:            parent.setInnerHTML_(xml)        eltlist = []        for child in range(parent.childNodes().length()):            eltlist.append(parent.childNodes().item_(child))        return eltlist            @deferUntilAfterLoad    def addItemAtEnd(self, xml, id):        elt = self.findElt(id)        if not elt:            print "warning: addItemAtEnd: missing element %s" % id        else:            #print "add item %s at end of %s" % (elt.getAttribute_("id"), id)            #print xml[0:79]            newElts = self.createElts(xml)            for newElt in newElts:                elt.insertBefore__(newElt, None)    @deferUntilAfterLoad    def addItemBefore(self, xml, id):        elt = self.findElt(id)        if not elt:            print "warning: addItemBefore: missing element %s" % id        else:            newElts = self.createElts(xml)            for newElt in newElts:                #print "add item %s before %s" % (newelt.getAttribute_("id"), id)                elt.parentNode().insertBefore__(newElt, elt)    @deferUntilAfterLoad    def removeItem(self, id):        self._removeElement(id)    @deferUntilAfterLoad    def removeItems(self, ids):        for id in ids:            self._removeElement(id)    def _removeElement(self, id):        elt = self.findElt(id)        if not elt:            print "warning: removeItem: missing element %s" % id        else:            #print "remove item %s" % id            elt.parentNode().removeChild_(elt)    @deferUntilAfterLoad    def changeItem(self, id, xml, changedAttrs, newInnerHTML):        self._changeElement(id, xml, changedAttrs, newInnerHTML)    @deferUntilAfterLoad    def changeItems(self, args):        for id, xml, changedAttrs, newInnerHTML in args:            self._changeElement(id, xml, changedAttrs, newInnerHTML)    def _changeElement(self, id, xml, changedAttrs, newInnerHTML):        elt = self.findElt(id)        if not elt:            print "warning: changeItem: missing element %s" % id        else:            #print "change item %s (new id %s)" % (id, elt.getAttribute_("id"))            #print xml[0:79]            #if id != elt.getAttribute_("id"):            #    raise Exception            #elt = self.findElt(id)            #if not elt:            #    print "ERROR ELEMENT LOST %s" % id            elt.setOuterHTML_(xml)    @deferUntilAfterLoad    def hideItem(self, id):        elt = self.findElt(id)        if not elt:            print "warning: hideItem: missing element %s" % id        else:            #print "hide item %s (new style '%s')" % (id, elt.getAttribute_("style"))            elt.setAttribute__("style", "display:none")    @deferUntilAfterLoad    def showItem(self, id):        elt = self.findElt(id)        if not elt:            print "warning: showItem: missing element %s" % id        else:            #print "show item %s (new style '%s')" % (id, elt.getAttribute_("style"))            elt.setAttribute__("style", "")###############################################################################

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -