本文整理汇总了TypeScript中@src/lib/messaging.attributeCaller函数的典型用法代码示例。如果您正苦于以下问题:TypeScript attributeCaller函数的具体用法?TypeScript attributeCaller怎么用?TypeScript attributeCaller使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了attributeCaller函数的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: URL
contentLocation: window.location,
perf,
})
import { HintingCmds } from "@src/background/hinting"
// Set up our controller to execute background-mode excmds. All code
// running from this entry point, which is to say, everything in the
// background script, will use the excmds that we give to the module
// here.
controller.setExCmds({
"": excmds_background,
"ex": CmdlineCmds,
"text": EditorCmds,
"hint": HintingCmds
})
messaging.addListener("excmd_background", messaging.attributeCaller(excmds_background))
messaging.addListener("controller_background", messaging.attributeCaller(controller))
// {{{ tri.contentLocation
// When loading the background, use the active tab to know what the current content url is
browser.tabs.query({ currentWindow: true, active: true }).then(t => {
(window as any).tri.contentLocation = new URL(t[0].url)
})
// After that, on every tab change, update the current url
let contentLocationCount = 0
browser.tabs.onActivated.addListener(ev => {
const myId = contentLocationCount + 1
contentLocationCount = myId
browser.tabs.get(ev.tabId).then(t => {
// Note: we're using contentLocationCount and myId in order to make sure that only the last onActivated event is used in order to set contentLocation
// This is needed because otherWise the following chain of execution might happen: onActivated1 => onActivated2 => tabs.get2 => tabs.get1
示例2: resolve
),
)
} else {
resolve(operation)
}
} else {
reject(
new Error(
`'${
downloadItem.filename
}' state not in_progress anymore but not complete either (would have been moved to '${saveAs}')`,
),
)
}
}
}
browser.downloads.onChanged.addListener(onDownloadComplete)
})
}
import * as Messaging from "@src/lib/messaging"
// Get messages from content
Messaging.addListener(
"download_background",
Messaging.attributeCaller({
downloadUrl,
downloadUrlAs,
}),
)
示例3: editor_function
/** @hidden **/
export function editor_function(fn_name, ...args) {
let result = Promise.resolve([])
if (tri_editor[fn_name]) {
tri_editor[fn_name](commandline_state.clInput, ...args)
result = refresh_completions(commandline_state.clInput.value)
} else {
// The user is using the command line so we can't log message there
// logger.error(`No editor function named ${fn_name}!`)
console.error(`No editor function named ${fn_name}!`)
}
return result
}
import * as SELF from "@src/commandline_frame"
Messaging.addListener("commandline_frame", Messaging.attributeCaller(SELF))
import { getCommandlineFns } from "@src/lib/commandline_cmds"
commandline_state.fns = getCommandlineFns(commandline_state)
Messaging.addListener("commandline_cmd", Messaging.attributeCaller(commandline_state.fns))
// Listen for statistics from the commandline iframe and send them to
// the background for collection. Attach the observer to the window
// object since there's apparently a bug that causes performance
// observers to be GC'd even if they're still the target of a
// callback.
; (window as any).tri = Object.assign(window.tri || {}, {
perfObserver: perf.listenForCounters(),
})
示例4: listen
// Set up our controller to execute content-mode excmds. All code
// running from this entry point, which is to say, everything in the
// content script, will use the excmds that we give to the module
// here.
import * as controller from "@src/lib/controller"
import * as excmds_content from "@src/.excmds_content.generated"
import { CmdlineCmds } from "@src/content/commandline_cmds"
import { EditorCmds } from "@src/content/editor"
import * as hinting_content from "@src/content/hinting"
controller.setExCmds({
"": excmds_content,
"ex": CmdlineCmds,
"text": EditorCmds,
"hint": hinting_content.getHintCommands()
})
messaging.addListener("excmd_content", messaging.attributeCaller(excmds_content))
messaging.addListener("controller_content", messaging.attributeCaller(controller))
// Hook the keyboard up to the controller
import * as ContentController from "@src/content/controller_content"
import { getAllDocumentFrames } from "@src/lib/dom"
function listen(elem) {
elem.removeEventListener("keydown", ContentController.acceptKey, true)
elem.removeEventListener(
"keypress",
ContentController.canceller.cancelKeyPress,
true,
)
elem.removeEventListener(
"keyup",
ContentController.canceller.cancelKeyUp,
示例5: catch
} catch (e) {
// Same as with hide(), it's ok to use cmdline_logger here
cmdline_logger.error(e)
}
}
export function hide_and_blur() {
hide()
blur()
}
export function executeWithoutCommandLine(fn) {
let parent
if (cmdline_iframe) {
parent = cmdline_iframe.parentNode
parent.removeChild(cmdline_iframe)
}
let result
try {
result = fn()
} catch (e) {
cmdline_logger.error(e)
}
if (cmdline_iframe) parent.appendChild(cmdline_iframe)
return result
}
import * as Messaging from "@src/lib/messaging"
import * as SELF from "@src/content/commandline_content"
Messaging.addListener("commandline_content", Messaging.attributeCaller(SELF))
示例6: shim
/** Shim to access BG browser APIs from content. */
function shim(api, func, args) {
return browser[api][func](...args)
}
import { addListener, attributeCaller, MessageType } from "@src/lib/messaging"
addListener(
"browser_proxy_background" as MessageType,
attributeCaller({ shim }),
)